JSON_ERROR_SYNTAX : découvrez les problèmes de caractères cachés
Lorsque vous rencontrez l'erreur déroutante JSON_ERROR_SYNTAX lors du décodage de JSON à l'aide de json_decode(), malgré l'assurance des formateurs en ligne que le JSON est valide, il est crucial de rechercher les caractères cachés.
La fonction json_decode() de PHP est stricte et rejettera le JSON avec toutes les erreurs de syntaxe, y compris les caractères de contrôle invisibles ou l'encodage UTF-8 invalide. Pour résoudre ce problème, implémentez le code suivant :
<code class="php">for ($i = 0; $i <= 31; ++$i) { $data = str_replace(chr($i), "", $data); } $data = str_replace(chr(127), "", $data);</code>
Cette boucle élimine les caractères de contrôle (codes ASCII 0-31 et 127). De plus, vérifiez la « marque d'ordre des octets » (0xEF 0xBB 0xBF) qui peut préfixer le JSON et supprimez-la :
<code class="php">if (0 === strpos(bin2hex($data), 'efbbbf')) { $data = substr($data, 3); }</code>
Après avoir nettoyé les données JSON, décodez-les à l'aide de json_decode(). Cette approche globale résoudra de nombreuses instances de l'erreur JSON_ERROR_SYNTAX, offrant ainsi une expérience de décodage plus significative.
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!