在使用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));
我是使用第三種方案解決的問題~