2016-06-07 42 views
0

所以我在將JSON字符串轉換爲PHP數組時遇到此問題。數據通過HTTP POST發送,所以我知道可能需要一些解碼。PHP中的JSON解碼字符串(數組數組)特殊字符

任何人都可以洞察我將如何在PHP中使用json_decode()將此字符串轉換爲數組嗎? "[[\"37\",\"text\",\"\\\"\\\"\"],[\"38\",\"text\",\"\\\"\\\"\"],[\"39\",\"text\",\"\\\"one word two words. Hello? \\\\\\\"escape\\\\\\\" lol\\\"\"]]"

輸入是:

[ 
    ["37", "text", ""], 
    ["38", "text", ""], 
    ["39", "text", userInputtedString] 
] 

其中userInputtedString是: one word two words. Hello? "escape" lol

^或其他任何Unicode值

+0

那是_actually_你在得到什麼請求?如果是這樣,那麼發佈中的某些內容似乎變得有點棘手。 –

+0

或者您在某處添加了附加內容,或者打開了潛在的魔術引號,或者兩者兼而有之。等等 –

+0

@JonStirling是的,它只是來自JavaScript作爲AJAX參數。只需在javascript中的數組上使用標準的'JSON.stringify()'。這很奇怪...... –

回答

1

使用函數utf8_encode json_decode前

$str = "[[\"37\",\"text\",\"\\\"\\\"\"],[\"38\",\"text\",\"\\\"\\\"\"],[\"39\",\"text\",\"\\\"one word two words. Hello? \\\\\\\"escape\\\\\\\" lol\\\"\"]]"; 
$str = utf8_encode($str); 
$str = json_decode($str,JSON_UNESCAPED_SLASHES); 
+0

這有點解決了,謝謝。在通過POST傳遞輸入之前,我必須在Javascript中執行utf8編碼 –

1

出了什麼問題?

只需使用像你提到的json_decode。

$ans = json_decode($_POST["name-of-var"]); 

這應該這樣做。

+0

它只是返回NULL。對不起,我應該更具體地 –

+0

[鏈接](http://ideone.com/Pgq8XB)它在我嘗試時在這裏工作。 –

+0

有趣的是,它看起來像我的POST輸入沒有消毒。謝謝! –

1

您也可以使用uft8_encode(發送給HTML)和uft8_decode(接收),但不正確的做法