mfl
Новичок
str_ireplace() и кириллица
В общем код:
Вот что на выходе (обращаем внимание на последнюю строку):
От сюда вопрос, из за чего такое поведение функции?
Если проблема с локалью, почему тогда остальные функции работают корректно?
Замечена эта странность именно кода php работает на Unix
На windows работа корректная
В общем код:
PHP:
<?php
$text="ЯблОКо1 ЯБЛОКО1 яблоко1 fo FO <br/>";
// устанавливаем русскую локаль
setlocale(LC_ALL, array("ru_RU.CP1251", "ru_SU.CP1251", "ru_RU", "russian", "ru_SU", "ru"));
// проверяем функции рег.выражений
print preg_replace("~я~i", "*", $text);
// проверяем строковые функции
print strtolower($text);
// проверяем str_ireplace
print str_ireplace("яб", "*", $text);
print str_ireplace("f", "*", $text);
// теперь внимание: проверяем str_ireplace с заменой одного символа кириллицы
print str_ireplace("я", "*", $text);
?>
т.е. функция становится чувствительна к регистру символов кириллици.*блОКо1 *БЛОКО1 *блоко1 fo FO
яблоко1 яблоко1 яблоко1 fo fo
*лОКо1 *ЛОКО1 *локо1 fo FO
ЯблОКо1 ЯБЛОКО1 яблоко1 *o *O
ЯблОКо1 ЯБЛОКО1 *блоко1 fo FO
От сюда вопрос, из за чего такое поведение функции?
Если проблема с локалью, почему тогда остальные функции работают корректно?
Замечена эта странность именно кода php работает на Unix
На windows работа корректная