一見有効な JSON での PHP json_decode() デコードの問題
PHP の json_decode 関数を使用してプレーンテキスト ファイルに保存されている JSON をデコードしようとすると、一部のユーザーは、JSON が明らかに有効であるにもかかわらず、不可解な NULL が返されることに遭遇します。
影響を受ける JSON は、多くの場合、JSON スキーマ検証標準に準拠しており、http://jsonlint.com/ などのプラットフォームでの厳格なテストに合格しています。ただし、PHP で JSON をデコードする場合、それはわかりにくいままです。
この問題を解決するには、次のコード行をデコード プロセスに組み込むことを検討してください。
json_decode(preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true);
この変更された json_decode 呼び出しは、 JSON 文字列内の非表示または印刷不可能な文字 (制御文字、不正な UTF-8 文字、特殊文字など) と空の文字列。これらの文字は、デコード中に不一致を引き起こし、結果として NULL が返される可能性があります。
このような文字をフィルタリングして除外することにより、変更されたコードにより、 json_decode 関数が JSON 文字列を正確に解析できるようになり、JSON 文字列の有効な PHP 表現を返すことができるようになります。 JSON データ。
以上が有効な JSON にもかかわらず、PHP の「json_decode()」が NULL を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。