在一个脚本中,我从iconv_strlen()函数中创建了一个错误。它尝试在cp1251中检查字符串的utf8 8-len。
$len = iconv_strlen($cp1252str, "utf-8");我尝试使用“utf-8//忽略”来处理静音错误,但它不起作用。下面是一个示例,它包含了iconv (//忽略工作)和iconv_strlen (//忽略非工作)。
<?php
$cp1252str = '';
for ($i = 128; $i < 256; $i++) {
$cp1252str .= chr($i);
}
iconv("cp1252", "utf-8//IGNORE", $cp1252str);
iconv_strlen($cp1252str, "utf-8//IGNORE");输出:
iconv_strlen():检测到第9行PHP跟踪中/home/user/tmp/test.php输入字符串中的非法字符:PHP1.main}() /home/user/tmp/test.php:0 PHP2.PHP2.HOME/user/tmp/test.php:9
我怎样才能消除这个错误呢?只有@?
发布于 2016-01-22 11:12:04
在https://bugs.php.net/bug.php?id=71346&edit=2上获得答案
这是因为iconv_strlen()中的字符集参数用于输入字符串,而“//忽略”标志只打算在转换过程中的输出字符集中使用,即在iconv()调用中。 “//忽略”意味着不能在输出字符集中表示的字符将被丢弃。但是在您的示例中,您提供了一个无效的UTF-8输入字符串,并告诉iconv_strlen()它是在UTF-8字符集中编码的,因此您正确地收到了输入字符串包含非法字符的通知。
https://stackoverflow.com/questions/34718698
复制相似问题