Php iconv_strlen()-//忽略不起作用
在一个脚本中,我从iconv_strlen()函数中发现了一个错误。它尝试检查cp1251中字符串的utf8长度Php iconv_strlen()-//忽略不起作用,php,encoding,iconv,strlen,libiconv,Php,Encoding,Iconv,Strlen,Libiconv,在一个脚本中,我从iconv_strlen()函数中发现了一个错误。它尝试检查cp1251中字符串的utf8长度 $len = iconv_strlen($cp1252str, "utf-8"); 我尝试使用“utf-8//IGNORE”来表示静音错误,但它不起作用。下面是iconv(//忽略工作)和iconv_strlen(//忽略不工作)的示例 获取答案 这是因为iconv_strlen()中的charset参数用于 输入字符串,而“//忽略”标志仅用于 在iconv()调用中,转换期间
$len = iconv_strlen($cp1252str, "utf-8");
我尝试使用“utf-8//IGNORE”来表示静音错误,但它不起作用。下面是iconv(//忽略工作)和iconv_strlen(//忽略不工作)的示例
获取答案
这是因为iconv_strlen()中的charset参数用于
输入字符串,而“//忽略”标志仅用于
在iconv()调用中,转换期间的输出字符集
“//忽略”是指无法在
输出字符集将被丢弃。但在你的情况下,你给出了一个
输入无效的UTF-8字符串,并告诉iconv_strlen()它
在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");