проблема с seems_utf8 при включенном mbstring.func_overload
-
Проблема собственно в функции remove_accents из файла wp-includes/formatting.php Если в строке встречаются буквы ы,я и ещё какая-то, seems_utf8 возвращает, что это не юникод, и remove_accents ломает строку в хлам, а потом плагины вроде RusToLat заменяют её на нечто вроде: dhddhdhd…
Собственно вот код функции seems_utf8, и совсем не очевидно, что здесь не так. Подскажите, пожалуйста, как с этим правильно бороться, и если это баг, то стоит ли ждать что его пофиксят?
function seems_utf8($str) { $length = strlen($str); for ($i=0; $i < $length; $i++) { $c = ord(substr($str, $i, 1)); // $str[$i] if ($c < 0x80) $n = 0; # 0bbbbbbb elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b else return false; # Does not match any model for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? if ((++$i == $length) || ((ord(substr($str, $i, 1)) & 0xC0) != 0x80)) // $str[$i] return false; } } return true; }
Просмотр 4 ответов — с 1 по 4 (всего 4)
Просмотр 4 ответов — с 1 по 4 (всего 4)
- Тема «проблема с seems_utf8 при включенном mbstring.func_overload» закрыта для новых ответов.