突出显示部分匹配的关键字

Highlight partly matched keywords

我从 Whosebug 中提取了这段代码以粗体匹配关键字。但它只加粗完全匹配的关键字。

例如:

$text = "iphone" and $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>[=10=]</b>', $text);
} 
$re = '~(' . implode('|', $m[0]) . ')~i';

使用 this.Remove \b 因为它会查找单词边界。

\b assert position at a word boundary (^\w|\w$|\W\w|\w\W)