我有一個數據文件(準確地說是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