Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php iconv_strlen()-//忽略不起作用_Php_Encoding_Iconv_Strlen_Libiconv - Fatal编程技术网

Php iconv_strlen()-//忽略不起作用

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()调用中,转换期间

在一个脚本中,我从iconv_strlen()函数中发现了一个错误。它尝试检查cp1251中字符串的utf8长度

$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");