PHP - проверьте, содержит ли строка слова длиннее 4 символов, затем включите «+ *», а для тех, кто короче 4 символов, включите только «*» - PullRequest
1 голос
/ 23 октября 2019

Мне удается частично выполнить только одну часть, но я не могу заставить работать вторую часть.

  • Если слово содержит < 4 символа, в конце этого слова следует указывать только *.
  • Если слово содержит >= 4 символа, * должен быть добавлен в конце, а + в начале.

Код, который я сделал ...

$string = "This is a short sentence which should include all regex results";

preg_match_all('/\b[A-Za-z0-9]{4,99}\b/', $string, $result);

echo implode("* +", $result[0]);

даст следующие результаты ...

This* +short* +sentence* +which* +should* +include* +regex* +results

в то время как он должен возвращать следующие результаты ...

+This* is* a* +short* +sentence* +which* +should* +include* all* +regex* +results*

PS: я хочу, чтобы это улучшило гибкость полнотекстового поиска для таблиц innodb.

1 Ответ

1 голос
/ 23 октября 2019

Вы можете использовать preg_replace с двумя регулярными выражениями для замены, одно из которых соответствует словам с 1-3 буквами, а другое - 4 или более:

$string = "This is a short sentence which should include all regex results";
echo preg_replace(array('/\b(\w{1,3})\b/', '/\b(\w{4,})\b/'), array('$1*', '+$1*'), $string);

Вывод:

+This* is* a* +short* +sentence* +which* +should* +include* all* +regex* +results*

Демонстрация на 3v4l.org

...