首頁 > 後端開發 > PHP7 > 主體

遇到一個關於php7 json_decode null問題!

藏色散人
發布: 2023-02-18 09:16:02
轉載
2422 人瀏覽過

遇到一個關於php7 json_decode null問題!

具體問題描述:

1、確認檔案無BOM頭

2、嘗試瞭如下多種方式去除非法字串,但仍然輸出NULL

        $some_string = htmlspecialchars_decode($some_string);
        $some_string = preg_replace("/\t/", " ", $some_string);
        $some_string = preg_replace("/\n/", ' ', $some_string);
        $some_string = str_replace("\n", ' ', $some_string);
        $some_string = str_replace ('\n','', $some_string);
登入後複製

3、json_last_error()輸出4,Syntax error, malformed JSON

4、直接輸出字串,瀏覽器能夠正常解析josn,如下截圖

遇到一個關於php7 json_decode null問題!

解決方法:

因為你的字串不是標準的JSON字串, 標準的JSON字串每個string類型都要用"引起了

測試程式碼

<?php 
$jsonStr1 = &#39;{status: {RetCode:0, msg: "success"}, data: {}}&#39;;
var_dump(json_decode($jsonStr1, true));
var_dump(json_last_error());
echo "--------分割线--------".PHP_EOL;
$jsonStr2 = &#39;{"status": {"RetCode":0, "msg": "success"}, "data": {}}&#39;;
var_dump(json_decode($jsonStr2, true));
登入後複製

結果

NULL
int(4)
--------分割线--------
array(2) {
  ["status"]=>
  array(2) {
    ["RetCode"]=>
    int(0)
    ["msg"]=>
    string(7) "success"
  }
  ["data"]=>
  array(0) {
  }
}
登入後複製

============== 更新======== =======

經過調試,發現是BOM 引起的,以下是解決方案

$dataString = $merchant_arr[&#39;data&#39;];
$A = substr($dataString, 0, 1);
$B = substr($dataString, 1, 1);
$C = substr($dataString, 2, 1);
if ((ord($A) == 239) && (ord($B) == 187) && (ord($C) == 191)) {
    $dataString = substr($dataString, 3);
}
$dataArray = json_decode($dataString, true);
登入後複製

推薦學習:《PHP7教程

以上是遇到一個關於php7 json_decode null問題!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板