0

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

$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[/b] [b]bbb[/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] 文本

如何得到这个结果:

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

如何修改 preg_replace ?

4

1 回答 1

1

你去:

<?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;

?>
于 2013-02-27T23:51:47.243 回答