Я расширяю нашу страницу поиска видео , чтобы выделить критерии поиска в результатах. Поскольку пользователь может ввести judas priest
, а в видео есть текст Judas Priest
, я должен использовать регулярные выражения, чтобы сохранить регистр исходного текста.
Мой код работает, но у меня проблемы со специальными символами, такими как š, č and ž
, кажется, что Preg_Replace()
будет совпадать только в том случае, если регистр одинаков (несмотря на модификатор /ui
).
Мой код:
$Content = Preg_Replace ( '/\b(' . $term . '?)\b/iu', '<span class="HighlightTerm">$1</span>', $Content );
Я тоже пробовал это:
$Content = Mb_Eregi_Replace ( '\b(' . $term . '?)\b', '<span class="HighlightTerm">\\1</span>', $Content );
Но это также не работает. Он будет соответствовать "SREČA", если поисковым термином является "SREČA", но если поисковым термином будет "sreča", он не будет совпадать с ним (и наоборот).
Так как мне заставить это работать?
обновление: Я устанавливаю язык и внутреннюю кодировку:
Mb_Internal_Encoding ( 'UTF-8' );
$loc = "UTF-8";
putenv("LANG=$loc");
$loc = setlocale(LC_ALL, $loc);