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

Тема в разделе "Регулярные выражения", создана пользователем d0ublezer0, 29 мар 2018.

Модераторы: xpert13
  1. d0ublezer0

    d0ublezer0

    Регистр.:
    21 май 2009
    Сообщения:
    249
    Симпатии:
    144
    Приходит некая поисковая строка $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);
    }
    я совсем в регулярках не силен, все по гуглу собрал.
    Что я упустил?
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.043
    Симпатии:
    713
    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>гу
     
    pautina и d0ublezer0 нравится это.