【发布时间】:2012-07-27 09:46:39
【问题描述】:
在 PHP 中,我们可以使用mb_check_encoding() 来确定字符串是否为有效的 UTF-8。但这不是一个可移植的解决方案,因为它需要编译和启用 mbstring 扩展。此外,它不会告诉我们哪个字符是无效的。
是否有正则表达式(或其他 100% 可移植的方法)可以匹配给定字符串中的无效 UTF-8 字节?
这样,如果需要,可以替换这些字节(保留二进制信息,例如在构建包含二进制数据的测试输出 XML 文件时)。因此,将字符转换为 UTF-8 会丢失信息。所以,我们可能想要转换:
"foo" . chr(128) . chr(255)
进入
"foo<128><255>"
所以只是“检测”字符串不够好,我们需要能够检测哪些字符是无效的。
【问题讨论】:
标签: php regex validation utf-8