ホームページ > バックエンド開発 > PHPチュートリアル > PHP の `json_encode()` でスラッシュ エスケープを防ぐ方法は?

PHP の `json_encode()` でスラッシュ エスケープを防ぐ方法は?

Susan Sarandon
リリース: 2024-11-27 02:28:10
オリジナル
491 人が閲覧しました

How to Prevent Forward Slash Escaping in PHP's `json_encode()`?

json_encode() でのスラッシュのエスケープ

PHP で JSON データを操作する場合、スラッシュ ("/ ") は json_encode() を使用してエスケープされています。これは、外部ソースから JSON データを取得し、それを再構築するために配列に解析するときに発生する可能性があります。エスケープされたスラッシュは、変更しないままにするとデータの整合性に影響を与える可能性があります。

このエスケープ動作を無効にするために、PHP 5.4 以降では JSON_UNESCAPED_SLASHES フラグが提供されています。このフラグを json_encode() 関数に追加すると、スラッシュの自動エスケープを防ぐことができます。

$results = json_encode($results, JSON_UNESCAPED_SLASHES);
ログイン後にコピー

この変更により、JSON データ内のスラッシュがエスケープされず、データの整合性が維持されます。ファイルのキャッシュ後。

重要注:

JSON_UNESCAPED_SLASHES を使用する前に、その意味を理解することが重要です。このフラグは、セキュリティ上のリスクを引き起こす可能性があるため、Web/HTML コンテキストでは使用しないでください。ただし、CLI または非 HTTP JSON 通信環境では適用できる場合があります。 Web/HTML アプリケーションの読みやすさのためにスラッシュのエスケープが不可欠な場合は、代替メソッドを使用して処理することを検討してください。

例:

次の例を考えてみましょう。ここで、JSON データは取得され、解析されます:

$instagrams = json_decode($response)->data;
ログイン後にコピー

再構築後、データは再エンコードされ、キャッシュ:

file_put_contents($cache, json_encode($results));
ログイン後にコピー

結果のキャッシュ ファイルには、JSON_UNESCAPED_SLASHES なしでエスケープされたスラッシュが含まれます。ただし、このフラグを json_encode() 関数に追加すると、スラッシュがエスケープされずに保存されます。

file_put_contents($cache, json_encode($results, JSON_UNESCAPED_SLASHES));
ログイン後にコピー

JSON_UNESCAPED_SLASHES フラグを理解して利用することで、JSON データ内のスラッシュのエスケープ動作を制御し、その動作を確実にすることができます。整合性を確保し、潜在的なデータ破損を回避します。

以上がPHP の `json_encode()` でスラッシュ エスケープを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート