Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „json_decode()' von PHP bei scheinbar gültigem JSON NULL zurück?
PHP json_decode() gibt NULL zurück, wenn scheinbar gültiges JSON bereitgestellt wird: Eine Lösung
Beim Versuch, ein im Klartext gespeichertes JSON-Objekt zu dekodieren Beim Erstellen einer Datei mit der json_decode()-Funktion von PHP sind einige Benutzer auf das Problem gestoßen, dass die Funktion NULL zurückgibt, obwohl der JSON-Code beim Testen gültig erscheint gegen JSON-Validatoren.
Bei Betrachtung des bereitgestellten Codeausschnitts erscheint das JSON-Objekt gut formatiert. Es ist jedoch möglich, dass die Datei unsichtbare Zeichen oder Nicht-UTF-8-Zeichen enthält, die den Dekodierungsprozess stören können.
Um dieses Problem zu beheben, besteht eine von Benutzern vorgeschlagene Lösung darin, die preg_replace()-Funktion von PHP zu verwenden Entfernen Sie alle Nicht-UTF-8-Zeichen aus der JSON-Zeichenfolge. Der geänderte Code würde so aussehen:
$json_object = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true );
Dieser reguläre Ausdruck ersetzt alle Zeichen außerhalb des UTF-8-Zeichenbereichs durch eine leere Zeichenfolge und stellt so sicher, dass die JSON-Zeichenfolge nur gültige Zeichen enthält.
Durch Anwenden dieser Änderung sollte die json_decode()-Funktion von PHP in der Lage sein, das JSON-Objekt erfolgreich zu dekodieren und ein PHP-Objekt oder -Array zurückzugeben, das die JSON-Daten darstellt. Es wurde berichtet, dass diese Lösung bei vielen Benutzern, die mit diesem Problem konfrontiert sind, effizient funktioniert.
Das obige ist der detaillierte Inhalt vonWarum gibt „json_decode()' von PHP bei scheinbar gültigem JSON NULL zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!