我正在創建一個Web服務來將JSON傳輸到iPhone應用程序。我使用json-framework來接收json,這很好用,因爲它可以自動解碼諸如「\ u2018」之類的東西。我遇到的問題是,似乎沒有一個全面的方法來一舉得到所有的角色。在HTML中將HTML編號的實體轉換爲Unicode以便在iPhone上使用
例如html_entity_decode()
獲得大部分東西,但它留下了像‘(‘)。爲了捕獲這些實體並將它們轉換爲json-framework可以使用的東西(例如\ u2018),我使用此代碼將&#轉換爲\ u,將數字轉換爲十六進制,然後剝離結尾分號。
function func($matches) {
return "\u" . dechex($matches[1]);
}
$json = preg_replace_callback("/&#(\d{4});/", "func", $json);
這對我來說目前正在工作,但它只是感覺不對。似乎我肯定錯過了一些將要在以後回來困擾我的角色。
有沒有人看到這種方法的缺陷?任何人都可以想到這種方法會錯過的角色?
任何幫助將不勝感激!
它看起來像JSON-框架要求這些實體是在十六進制形式,例如\ u2018,爲了解碼。我的主要問題是爲什麼PHP函數html_entity_decode()沒有趕上‘。這讓我想知道還有什麼沒有抓住。 – 2010-12-02 19:27:39
@Philip:它確實抓住了我,我得到一個解碼的```。 – bobince 2010-12-05 23:26:07