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

时间:2015-02-05 09:21:30

标签: regex preg-replace preg-match-all

我从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);
} 

1 个答案:

答案 0 :(得分:2)

$re = '~(' . implode('|', $m[0]) . ')~i';

使用此。删除\b,因为它会查找字边界。

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