我想突出显示整个表达式和单个单词
$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;
?>