JSON_ERROR_SYNTAX trotz gültigem JSON auf Online-Formatierern
Es wird eine „SYNTAX ERROR“-Antwort von json_decode() festgestellt, während das JSON auf externen Formatierern gültig erscheint kann rätselhaft sein. Hier ist eine umfassende Lösung:
Entfernung versteckter Zeichen:
Unsichtbare Zeichen können Syntaxfehler verursachen. Entfernen Sie diese Zeichen mit dem folgenden Code:
<code class="php">$json = file_get_contents('http://www.mywebservice'); // Remove unwanted characters for ($i = 0; $i <= 31; ++$i) { $json = str_replace(chr($i), "", $json); } $json = str_replace(chr(127), "", $json); // Handle BOM (Byte Order Mark) if (0 === strpos(bin2hex($json), 'efbbbf')) { $json = substr($json, 3); }</code>
Dekodierung des bereinigten JSON:
Da nun die versteckten Zeichen entfernt wurden, dekodieren Sie den JSON:
<code class="php">$obj = json_decode($json);</code>
Fehlerbehandlung:
Wenn die Dekodierung immer noch fehlschlägt, überprüfen Sie den spezifischen Fehlercode mit json_last_error():
<code class="php">switch (json_last_error()) { case JSON_ERROR_NONE: echo 'JSON_ERROR_NONE'; break; case JSON_ERROR_DEPTH: echo 'JSON_ERROR_DEPTH'; break; // ... Other error codes default: echo 'Unknown Error'; break; }</code>
Wenn Sie diese Schritte befolgen, können Sie kann JSON-Syntaxfehler beheben und JSON-Daten erfolgreich dekodieren. Die json_last_error_msg()-Funktion von PHP 5.5 bietet zusätzliche Fehlerdetails, ist jedoch möglicherweise nicht erforderlich, nachdem versteckte Zeichen und Dekodierungsprobleme behoben wurden.
Das obige ist der detaillierte Inhalt vonWie behebe ich „SYNTAX ERROR' in JSON_DECODE() trotz gültigem JSON-Format?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!