Php 使用iconv()检查无效的UTF-8字符:在输入字符串中检测到非法字符
我正在使用iconv()检查字符串是否包含无效的UTF-8字符Php 使用iconv()检查无效的UTF-8字符:在输入字符串中检测到非法字符,php,utf-8,character-encoding,Php,Utf 8,Character Encoding,我正在使用iconv()检查字符串是否包含无效的UTF-8字符 $valid = $string == iconv('UTF-8', 'UTF-8//IGNORE', $string); 但是,这仍然会引发错误:“iconv():在输入字符串中检测到非法字符” 据我所知,这不应该使用//忽略标志 我在Ubuntu 14.04.1 LTS上使用PHP5.5.9-1ubuntu4.6提供了一个更好的答案来解释为什么iconv()抛出错误: 输出字符集(第二个参数)应不同 来自输入字符集(第一个参数
$valid = $string == iconv('UTF-8', 'UTF-8//IGNORE', $string);
但是,这仍然会引发错误:“iconv():在输入字符串中检测到非法字符”
据我所知,这不应该使用//忽略标志
我在Ubuntu 14.04.1 LTS上使用PHP5.5.9-1ubuntu4.6提供了一个更好的答案来解释为什么iconv()
抛出错误:
输出字符集(第二个参数)应不同
来自输入字符集(第一个参数)。如果它们是一样的,那么
如果字符串中存在非法的UTF-8字符,iconv将拒绝
根据输入字符集,它们被视为非法
在PHP手册中,您可以使用以下函数检测字符串是否以UTF-8编码:
$valid = mb_detect_encoding($str, 'UTF-8', true); // returns boolean.
更多 可能重复删除了我对这个问题的其他评论,因为在我实际更改了我测试的字符串的编码后,这项功能运行得很好。发布了一个答案,因为它比两个单独的链接更规范(dupe在技术上并没有解决检查UTF-8编码字符串的问题-只是解释了为什么
iconv()
不工作)工作得很好!谢谢