массивы — PHP использует preg_replace для выделения строки, которая является частью слова

Итак, у меня есть следующий код, который выделяет слово / слова, которые были введены в строку поиска в результатах поиска:

$sk = explode(" ",$searchVal);
foreach ($searchPostResults as $pagePosts)
echo '<li><span class="searchResult"><a href="'
. get_the_permalink($pagePosts->ID) . '" title="">' .
preg_replace('/\b(' . implode('|', $sk) . ')\b/iu',
'<strong class="searchHighlight">\0</strong>',
get_the_title($pagePosts->ID))
. '</a></span></li>';

Теперь это работает по большей части.
Допустим, я ввел поисковый термин «как» в строке поиска, слово «как» выделено.
Теперь, если слово как внутри другого слова, как душ, я хотел бы выделить, как это так:

s<strong class="searchHighlight">how</strong>er

Кто-нибудь знает, как я могу настроить код, чтобы сделать это.

ура

1

Решение

Поведение, которое вы описываете, противоположно намерениям большинства людей, и, вероятно, почему ваше регулярное выражение имеет \b в этом. \b это граница слова и делает так, чтобы вы могли иметь только полные совпадения слов. Удалить \bи это должно работать. Вам также не понадобится группа захвата.

preg_replace('/' . implode('|', $sk) . '/iu',
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]