JSON_ERROR_SYNTAX: 隠れた文字の問題を明らかにする
オンライン フォーマッタが保証されているにも関わらず、json_decode() を使用して JSON をデコード中に、複雑な JSON_ERROR_SYNTAX エラーが発生した場合JSON が有効であることを確認するには、隠れた文字を探すことが重要です。
PHP の json_decode() 関数は厳密であり、目に見えない制御文字や無効な UTF-8 エンコーディングなどの構文エラーのある JSON は拒否されます。この問題を解決するには、次のコードを実装します。
<code class="php">for ($i = 0; $i <= 31; ++$i) { $data = str_replace(chr($i), "", $data); } $data = str_replace(chr(127), "", $data);</code>
このループにより、制御文字 (ASCII コード 0 ~ 31 および 127) が削除されます。さらに、JSON のプレフィックスとして使用される「バイト オーダー マーク」 (0xEF 0xBB 0xBF) を確認して破棄します。
<code class="php">if (0 === strpos(bin2hex($data), 'efbbbf')) { $data = substr($data, 3); }</code>
JSON データをクリーンアップした後、json_decode() を使用してデコードします。この包括的なアプローチにより、JSON_ERROR_SYNTAX エラーの多くのインスタンスが解決され、より意味のあるデコード エクスペリエンスが提供されます。
以上が隠し文字をデコードする際の JSON_ERROR_SYNTAX の問題を修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。