【发布时间】:2012-01-21 10:19:33
【问题描述】:
任何想法如何通过 PHP 函数摆脱字符串中的 0xfffe 字符?
这样可以吗? preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string)?
【问题讨论】:
任何想法如何通过 PHP 函数摆脱字符串中的 0xfffe 字符?
这样可以吗? preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string)?
【问题讨论】:
好的,只是为了让您知道preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string) 成功了。
【讨论】:
注意:0xFFFE(错误,见下面的编辑——实际上是0xFEFF)通常用作所谓的字节顺序标记,这是一个可选的东西在文件的开头(并且只有那里!),表示内容的字节顺序。它通常包含在诸如 XML 文件之类的内容中。 因此,可能只考虑以该值开头的内容的大小写,而不必担心其余部分。
编辑:正如评论所指出的,它是用作 BOM 的 0xFEFF(有关更多信息,请参见 wikipedia),而不是 0xFFFE。因此,如果它是预期的 BOM,它要么被破坏,要么解码器假定错误的顺序(UTF-16 BE vs LE)。但更有可能将其用作无效字符标记;如果是这样,原来的问题更有意义。唯一的额外建议是,提供此类内容的人可能使用了过于有限的编码(ascii、latin-1),理想情况下该服务应该是固定的,而不是必须在客户端处理这个问题。
【讨论】: