删除无效的UTF-8字符 - PHP中的0xfffe

时间:2011-12-15 18:28:39

标签: php utf-8 pcre

任何想法如何通过PHP函数摆脱字符串中的0xfffe字符?

是这样的吗? preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string)

2 个答案:

答案 0 :(得分:1)

好的,只是让你知道preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string)做了这个伎俩。

答案 1 :(得分:0)

一个注意事项:0xFFFE(错误,请参阅下面的编辑 - 实际上它的 0xFEFF )通常用作所谓的字节顺序标记,这是一个可选的东西在文件的开头(并且只有那里!)表示内容的字节顺序。它通常包含在XML文件之类的内容中。 因此,有可能只考虑以此值开头的内容案例,而不用担心其余内容。

编辑:正如评论所指出的,它是用作BOM的0xFEFF(更多见wikipedia),而不是0xFFFE。因此,如果它是意图BOM,它将被破坏,或解码器假定错误的顺序(UTF-16 BE vs LE)。但更有可能的是它被用作无效的char标记;如果是这样,原始问题更有意义。唯一的另一个建议是,提供此类内容的人可能使用过于限制的编码(ascii,latin-1),理想情况下该服务应该是固定的,而不是必须在客户端处理此问题。