я хочу выделить целые как выражения и отдельные словаHighlight поиска - целые выражения и отдельные слова
$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] ааа [/ b] [b] bbb [/ b] [b] ccc [/ b] [/ b] текст [b] aaa [/ b] текст [b] xxaaayy [/ b] текст [b] [b] bbb [/ b] [б] ссс [/ b] [/ b] текст [b] [b] ГЭБ [/ 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?
Вы, вероятно, необходимо использовать утверждения '(<' и сделать поиск регулярных выражений для всех групп слов сразу '?! aaa | bbb | aaa bbb', а не в цикле – mario