突出显示搜索结果-整个表达式和单个单词


Highlight search results - whole expressions and single words

我想突出显示整个表达式和单个单词

$text ="text text aaa bbb ccc text aaa text xxaaayy text bbb ccc text bbb cccxxx text";
$words = array('aaa bbb ccc','aaa bbb','bbb ccc','aaa','bbb','ccc');
foreach ($words as $k=>$v){
  $text = preg_replace('/('w*?'.$v.''w*)/i', '[b]$1[/b]', $text);
}

这段代码将返回:

文本文字[b] [b] aaa bbb [/b] [b] [/b] [b] ccc [/b] [/b] [b] aaa [/b]文本[b] xxaaayy [/b] [b] [b]文本bbb [/b] [b] ccc [/b] [/b] [b] [b]文本bbb [/b] [b] cccxxx [/b] [/b]文本

如何得到这个结果:

text text [b]aaa bbb ccc[/b] text [b]aaa[/b] text [b]xxaaayy[/b] text [b]bbb ccc[/b] text [b]bbb cccxxx[/b] text

如何修改preg_replace

好了:

<?php
$text ="text text aaa bbb ccc text aaa text xxaaayy text bbb ccc text bbb cccxxx text";
$words = array('aaa bbb ccc','aaa bbb','bbb ccc','aaa','bbb','ccc');
$text = preg_replace('/('.implode("|",$words).')/i', '[b]$1[/b]', $text);
echo $text;
?>

更新版本:

<?php
$text ="text text aaa bbb ccc text aaa text xxaaayy text bbb ccc text bbb cccxxx text";
$words = array('aaa bbb ccc','aaa bbb','bbb ccc','aaa','bbb','ccc');
$text = preg_replace('/('w*('.implode("|",$words).')'w*)/i', '[b]$1[/b]', $text);
echo $text;
?>