нечувствительная к регистру подсветка в php

я использую эту функцию, чтобы выделить результаты запроса mysql:

 function highlightWords($string, $word)
 {

        $string = str_replace($word, "<span class='highlight'>".$word."</span>", $string);
    /*** return the highlighted string ***/
    return $string;

 }

 ....

  $cQuote =  highlightWords(htmlspecialchars($row['cQuotes']), $search_result);

проблема в том, что если я наберу «хорошо», в результатах поиска будут отображаться только строчные буквы «хорошо», а не «хорошо». как мне это исправить?


person input    schedule 01.05.2010    source источник


Ответы (1)


Вместо этого используйте str_ireplace().

РЕДАКТИРОВАТЬ: Вот версия регулярного выражения, которая сохраняет исходный регистр:

$string = preg_replace("/".preg_quote($word, "/")."/i", "<span class='highlight'>$0</span>", $string);
person serg    schedule 01.05.2010
comment
это работает, но что он делает, так это то, что он меняет заглавную «G» на маленькую «g». любые другие идеи? - person input; 01.05.2010
comment
Вы должны использовать preg_quote($word, '/') вместо $word. - person MiffTheFox; 01.05.2010
comment
@FrancisMV123 совпадение первого аргумента - person GDY; 19.08.2019