在PHP中,我们可以使用
有没有一个正则表达式(或其他100%可移植的方法)可以匹配给定字符串中的无效UTF-8字节?
这样,如果需要的话(保留二进制信息,比如构建包含二进制数据的测试输出XML文件时),这些字节可以被替换。因此,将字符转换为UTF-8会丢失信息。所以,我们可能想要进行转换:
所以仅仅“检测”字符串是不够的,我们需要能够检测出哪些字符是无效的。
mb_check_encoding()
来确定一个字符串是否为有效的UTF-8编码。但这并不是一个可移植的解决方案,因为它需要编译和启用mbstring扩展。此外,它也无法告诉我们哪个字符是无效的。有没有一个正则表达式(或其他100%可移植的方法)可以匹配给定字符串中的无效UTF-8字节?
这样,如果需要的话(保留二进制信息,比如构建包含二进制数据的测试输出XML文件时),这些字节可以被替换。因此,将字符转换为UTF-8会丢失信息。所以,我们可能想要进行转换:
"foo" . chr(128) . chr(255)
进入
"foo<128><255>"
所以仅仅“检测”字符串是不够的,我们需要能够检测出哪些字符是无效的。
--without-pcre-regex
开关。 - hakre"\xEF\xBF\xBD"
替换它们,请参见http://www.unicode.org/reports/tr36/#Ill-Formed_Subsequences - hakre