2013-04-17 88 views
2

我的數據庫在帶有特殊字符的JSON後面返回這個。我需要將其轉換回原始字符:將編碼的字符轉換回原始字符 - PHP

{ "event_id":"5153", 
     "name":"Event Test", 
     "description":"Persönlichkeit Universität"", 
     "start_time":"2013-04-24 9:00 AM EST", 
     "end_time":"2013-04-24 5:00 PM EST" 
} 

我想刪除所有的HTML字符。並將所有字符如&ouml轉換爲原始字符。所以description在上面的JSON實際上應該是這樣的

PersönlichkeitUniversität大學」

我的陣列做array_walk編碼陣列JSON之前,和strip_tags每個元素。 這是好的。(這導致上述JSON)

要獲得字符回來,我想:

1. encoding again with utf8_encode 
    2. htmlspecialchars_decode 
    3. html_entity_decode //This one is eliminating the character altogether. 

但沒有給出原始字符。

任何想法?

更新:

我嘗試這樣做。但現在描述字段返回爲空

array_walk_recursive($results, function (&$val) { 
    $val = strip_tags(html_entity_decode($val)); 
}); 

$results = json_encode($results); 
+0

怎麼樣在使用html_entity_decode之前json_encoding它呢? – bwoebi

+0

在json_encode之前和之後,我看到了相同的結果。所以我不知道如何在json_encode幫助之前調用html_entity_decode? –

回答

1

html_entity_decode應該做的伎倆。我認爲你的問題在別的地方。請記住json_encode只接受UTF-8字符。所以你可能需要utf8_encode你的字符串。

+0

我更新了我嘗試的結果以及結果。 –

+0

請嘗試在調用strip_tags的過程中添加對utf8_encode的調用。 –

+0

我試過了。沒用。它顯示:'Pers ö nlichkeit Universit ä t「' –

0

我在找東西的時候來到了這個話題。三年後,這個問題仍未得到答覆。

json_encode接受選項作爲第二個參數。如果您按照以下方式使用它,特殊字符將顯示爲原始。

json_encode($data, JSON_UNESCAPED_UNICODE) 
相關問題