我有一个数据文件(准确地说是Apple plist),它有Unicodecodepoints,如\U00e8
和\U2019
。我需要使用PHP将它们转换为有效的十六进制HTML entities。如何将unicode代码点转换为十六进制HTML实体?
我在做什么,现在是长长的一串:
$fileContents = str_replace("\U00e8", "è", $fileContents);
$fileContents = str_replace("\U2019", "’", $fileContents);
这显然是可怕的。我可以使用一个正则表达式将\U
和所有尾随的0s
转换为&#x
,然后粘在尾随的;
上,但这看起来也很笨拙。
是否有一种干净,简单的方法来取一个字符串,并将所有的unicode代码点替换为HTML实体?
PCRE正则表达式非常快速和安全;我会使用它们。 (其他的官方解决方案也可能使用正则表达式,或者查找表,这是你现在拥有的。) – MvanGeest 2010-08-13 19:30:29
根据[本页](http://code.google.com/p/networkpx/wiki/PlistSpec) ),那些转义序列表示UTF-16代码单元,而不是Unicode代码点。这意味着您可能必须将两个连续的代码单元(如果它们形成代理对)组合成一个HTML实体。 – Artefacto 2010-08-13 21:30:56