>  기사  >  백엔드 개발  >  php7 json_decode null에 대한 문제가 발생했습니다!

php7 json_decode null에 대한 문제가 발생했습니다!

藏色散人
藏色散人앞으로
2021-12-03 17:22:082407검색

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

4. 아래 스크린샷과 같이 문자열을 직접 출력하면 브라우저는 josn을 정상적으로 구문 분석할 수 있습니다. 표준 JSON 문자열 각 문자열 유형은 "

테스트 코드php7 json_decode null에 대한 문제가 발생했습니다!

<?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));

Result

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 Tutorial

"

위 내용은 php7 json_decode null에 대한 문제가 발생했습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제