В одном скрипте я обнаружил ошибку из функции iconv_strlen (). Попробуйте проверить utf8-len строки в cp1251.
$len = iconv_strlen($cp1252str, "utf-8");
Я пытаюсь использовать «utf-8 // IGNORE» для отключения звука, но это не работает. Вот пример с iconv (// IGNORE работает) и iconv_strlen (// IGNORE не работает)
<?php
$cp1252str = '';
for ($i = 128; $i < 256; $i++) {
$cp1252str .= chr($i);
}
iconv("cp1252", "utf-8//IGNORE", $cp1252str);
iconv_strlen($cp1252str, "utf-8//IGNORE");
Выход:
Примечание PHP: iconv_strlen (): обнаружен недопустимый символ во входных данных
строка в /home/user/tmp/test.php в строке 9 Трассировка стека PHP: PHP 1.
{main} () /home/user/tmp/test.php:0 PHP 2. iconv_strlen ()
/home/user/tmp/test.php:9
Как я могу отключить эту ошибку? Только с @?
Получить ответ на
https://bugs.php.net/bug.php?id=71346&править = 2
Это потому, что параметр charset в iconv_strlen () предназначен для
входная строка, в то время как флаг «// IGNORE» предназначен только для использования в
выходная кодировка во время преобразования в вызове iconv ().«// IGNORE» означает символы, которые не могут быть представлены в
Выходная кодировка будет сброшена. Но в вашем случае вы даете
входная строка с недопустимым UTF-8 и сообщающая iconv_strlen (), что она
закодирован в кодировке UTF-8, поэтому вы правильно получаете
обратите внимание, что ваша входная строка содержит недопустимый символ.
Других решений пока нет …