php json_decode返回null


在使用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));

我是使用第三種方案解決的問題~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM