So I have the following code which highlights the word/s which were entered into a search bar in search results:
$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>';
Now it works for the most part. Lets say I enter the search term "how to" in the search bar, the word how is highlighted. Now if the word how is inside another word like shower, I would like to highlight how like so:
s<strong class="searchHighlight">how</strong>er
Anyone know how I might adjust the code to do this.
Cheers
The behavior you are describing is the opposite of most peoples intentions, and probably why your regex has the
\bin it. The\bis a word boundary and makes it so you can have only full word matches. Remove the\bs and it should work. You also won't need the capture group.