str_ireplace не работает с не-ASCII charecters

Мне нужно выделить результат поиска в тексте на русском языке, но str_ireplace () просто не работает, когда запрос имеет другой случай. Я пробовал все, что я нашел в руководстве , но ничего не работает. Вот что я пробовал:

<?php setlocale (LC_ALL, 'ru_RU'); $query = 'ПрОбЛеМа'; $result = 'Эта проблема нам не знакома.'; $result = str_ireplace($query, "<strong>$query</strong>", $result); // does not work $result = preg_replace("/($query)/i", '<strong>$1</strong>', $result); // does not work $result = mb_eregi_replace("$query", "<strong>$query</strong>", $result); // does not work $result = ext_str_ireplace($query, "<strong>$query</strong>", $result); // from php.net - does not work $result = highlightStr($result, $query); // from php.net - does not work ?> 

Есть ли способ заставить его работать? Я здесь отчаянный.

PHP 5.3.3

Если вы добавите модификатор u (unicode) в preg_replace, он должен работать:

 $result = preg_replace("/($query)/ui", '<strong>$1</strong>', $result); 

вы можете использовать mb_eregi_replace, если вы используете не ASCII / multi Byte

но удалите "

 $result = mb_eregi_replace($query, "<strong>$query</strong>", $result); 

вы также можете установить свою кодировку:

 mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); 

Снизить на замену:

 function mb_str_ireplace ($search, $replace, $subject, &$replacements) { return preg_replace("/$search/ui", $replace, $subject, -1, $replacements); }