PHP 使用 preg_replace 突出显示作为单词一部分的字符串
PHP using preg_replace to highlight string that is part of a word
所以我有以下代码突出显示了在搜索结果中输入到搜索栏中的 word/s:
$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">[=12=]</strong>',
get_the_title($pagePosts->ID))
. '</a></span></li>';
现在大部分都可以用了。
假设我在搜索栏中输入搜索词 "how to",单词 how 突出显示。
现在,如果单词 how 位于另一个单词(如 shower)中,我想强调一下 how like so:
s<strong class="searchHighlight">how</strong>er
任何人都知道我可以如何调整代码来做到这一点。
干杯
您所描述的行为与大多数人的意图相反,这可能也是您的正则表达式中包含 \b
的原因。 \b
是一个 word boundary,所以你只能有完整的单词匹配。删除 \b
s,它应该可以工作。您也不需要捕获组。
preg_replace('/' . implode('|', $sk) . '/iu',
所以我有以下代码突出显示了在搜索结果中输入到搜索栏中的 word/s:
$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">[=12=]</strong>',
get_the_title($pagePosts->ID))
. '</a></span></li>';
现在大部分都可以用了。 假设我在搜索栏中输入搜索词 "how to",单词 how 突出显示。 现在,如果单词 how 位于另一个单词(如 shower)中,我想强调一下 how like so:
s<strong class="searchHighlight">how</strong>er
任何人都知道我可以如何调整代码来做到这一点。
干杯
您所描述的行为与大多数人的意图相反,这可能也是您的正则表达式中包含 \b
的原因。 \b
是一个 word boundary,所以你只能有完整的单词匹配。删除 \b
s,它应该可以工作。您也不需要捕获组。
preg_replace('/' . implode('|', $sk) . '/iu',