Php 使用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()抛出错误: 输出字符集(第二个参数)应不同 来自输入字符集(第一个参数

我正在使用iconv()检查字符串是否包含无效的UTF-8字符

$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()
不工作)工作得很好!谢谢