我从stackoverflow中获取此代码到粗体匹配的关键字。但它只是粗略地匹配关键字。
例如:
$ text =" iphone"和$ srch_term =" iphone" - >匹配并加粗
$ text =" iphone"和$ srch_term =" iph" - >没有匹配(我希望它匹配和大胆)
如何修复此代码以实现此目标?对不起,我对使用正则表达式知之甚少,所以我不知道如何处理它。
function highlightWords($text, $srch_term) {
preg_match_all('~\w+~', $srch_term, $m);
if(!$m)
return $text;
$re = '~\\b(' . implode('|', $m[0]) . ')\\b~i';
return preg_replace($re, '<b>$0</b>', $text);
}
答案 0 :(得分:2)
$re = '~(' . implode('|', $m[0]) . ')~i';
使用此。删除\b
,因为它会查找字边界。
\b assert position at a word boundary (^\w|\w$|\W\w|\w\W)