Maison > développement back-end > PHP7 > le corps du texte

J'ai rencontré un problème avec php7 json_decode null !

藏色散人
Libérer: 2023-02-18 09:16:02
avant
2384 Les gens l'ont consulté

J'ai rencontré un problème avec php7 json_decode null !

Description spécifique du problème :

1. Confirmez que le fichier n'a pas d'en-tête de nomenclature

2 J'ai essayé les méthodes suivantes pour supprimer les chaînes illégales, mais NULL est toujours affiché

        $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);
Copier après la connexion

3. json_last_error() génère 4, syntaxe. erreur, JSON mal formé

4. Affichez la chaîne directement et le navigateur peut analyser josn normalement, comme indiqué dans la capture d'écran ci-dessous

Jai rencontré un problème avec php7 json_decode null !

Solution :

Parce que votre chaîne n'est pas une chaîne JSON standard, une chaîne JSON standard Chaque type de chaîne doit être provoqué par "

Code de test

<?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));
Copier après la connexion

Résultat

NULL
int(4)
--------分割线--------
array(2) {
  ["status"]=>
  array(2) {
    ["RetCode"]=>
    int(0)
    ["msg"]=>
    string(7) "success"
  }
  ["data"]=>
  array(0) {
  }
}
Copier après la connexion

============== Mise à jour============= =

Après le débogage, il a été constaté que cela était dû à la nomenclature. Voici la solution

$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);
Copier après la connexion

Apprentissage recommandé : "Tutoriel PHP7"

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!