突出显示部分匹配的关键字
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)
我从 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)