iconv_strlen () — // IGNORE не работает

В одном скрипте я обнаружил ошибку из функции 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

Как я могу отключить эту ошибку? Только с @?

0

Решение

Получить ответ на
https://bugs.php.net/bug.php?id=71346&править = 2

Это потому, что параметр charset в iconv_strlen () предназначен для
входная строка, в то время как флаг «// IGNORE» предназначен только для использования в
выходная кодировка во время преобразования в вызове iconv ().

«// IGNORE» означает символы, которые не могут быть представлены в
Выходная кодировка будет сброшена. Но в вашем случае вы даете
входная строка с недопустимым UTF-8 и сообщающая iconv_strlen (), что она
закодирован в кодировке UTF-8, поэтому вы правильно получаете
обратите внимание, что ваша входная строка содержит недопустимый символ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]