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 ] text [b] [b] bbb [/ b] [b] ccc [/ b] [/ b] text [b] [b] bbb [/ b] [b] cccxxx [/ b] [/ b] text

この結果を得る方法:

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]文章

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 に答える