Почему регулярка учитывает регистр?

d0ublezer0

Мой дом здесь!
Регистрация
21 Май 2009
Сообщения
359
Реакции
201
Приходит некая поисковая строка $input_string, результаты $result_string нужно подсветить, обернув совпадающие значения в тег <i>
т.е. при входящем запросе "овощ ра" в строке "Овощное рагу" должна произойти замена на
Код:
<i>Овощ</i>ное <i>ра</i>гу

Но работает в кириллице UTF-8 только с точным совпадением регистра, не смотря на модификатор /i
Т.е. "Овощ" не заменяется
PHP:
$hl_words = preg_split("/[\s,]+/", trim($input_string));
if (is_array($hl_words))
{
$hl_words = "/(" . implode("|", $hl_words) . ")/i";
$hl_result = preg_replace($hl_words, '<i>$0</i>', $result_string);
}
я совсем в регулярках не силен, все по гуглу собрал.
Что я упустил?
 

zzallexx

Хранитель порядка
Регистрация
11 Июн 2008
Сообщения
1.053
Реакции
690
PHP:
$result_string="Овощное рагу";
$input_string="овощ ра";
$input_string_arr = explode(' ',$input_string);
foreach($input_string_arr as $i_str){
$pattern = '/' . preg_quote($i_str) . '/iu';
$result_string = preg_replace($pattern, '<i>$0</i>', $result_string);
}
echo $result_string;
на выходе для UTF-8
HTML:
<i>Овощ</i>ное <i>ра</i>гу
 
Сверху