在使用json_decode函數想把json串轉化為數組的時候,出現了null,當時還以為是因為json對字符串的長度有限制,還以為是因為兩邊少了引號,經過多次處理,發現都沒有效果。 百度各種帖子,發現此問題還有人遇到過,那么這個問題肯定也就有解決的方法啦~看過幾個帖子,總結問題的出現原因大概有這么幾點。我這里把收集到的都總結了
json_decode要求的字符串比較嚴格
1. 使用UTF-8編碼
2. 不能在最后元素有逗號
3. 不能使用單引號
4. 不能有\r,\t,如果有請替換
解決方案
一、bom頭問題
json字符串中的BOM頭是不可見字符,某些編輯器默認會加上BOM頭。
<?php $info = json_decode(trim($info,chr(239).chr(187).chr(191)),true);
二、語法錯誤
使用 json_last_error() 函數打印一下錯誤,頁面顯示4,也就是語法錯誤。
<?php echo $errorinfo = json_last_error(); //輸出4 語法錯誤
出現這個問題是因為在 json 字符串中反斜杠被轉義,只需要用 htmlspecialchars_decode() 函數處理一下 $content 即可:
$info= htmlspecialchars_decode($info);
三、其他破壞json字符串的字符
<?php $info= preg_replace('/[\x00-\x1F\x80-\x9F]/u', '', trim($info));
我是使用第三種方案解決的問題~