ホームページ  >  記事  >  バックエンド開発  >  PHP での json_encode の使用の概要

PHP での json_encode の使用の概要

不言
不言オリジナル
2018-08-03 14:59:441995ブラウズ

この記事では、PHP での json_encode の使用方法を紹介します。これは一定の参考値です。必要な友人はそれを参照できます。お役に立てば幸いです。

このような URL があると仮定します

$url = "https://www.baidu.com?key=你好";$data = ["url" => $url];echo json_encode($data);

このような出力を取得します

{"url":"https:\/\/www.baidu.com?key=\u4f60\u597d"}

まず、エンコード後に中国語が 16 進数になっていることがわかりました。これは文字化けではありません。次のように、元の結果を取得するために直接逆シリアル化するだけでよいため、変更されました:

//代码$jsonStr = '{"url":"https:\/\/ 
$data = json_decode($jsonStr);
print_r($data);//输出stdClass Object
(
    [url] => https://www.baidu.com?key=你好)

これは文字化けしたコードではないことがわかりますので、このトピックについて話しましょう。文字化けではありません、16進数の合計を見ると読み取りに影響します

json_encode

//代码
$url = "https://www.baidu.com?key=你好";$data = ["url" => $url];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
//输出
{"url":"https:\/\/www.baidu.com?key=你好"}

にパラメータを追加できます 中国語は正常に表示できることがわかりましたが、バックスラッシュが自動的にエスケープされるというもう 1 つの問題があります。文字 \

は非常に不快に見えます。エスケープ文字を削除する方法はありますか?

//代码
$url = " 
$data = ["url" => $url];
echo json_encode($data, JSON_UNESCAPED_SLASHES);
//输出
{"url":"https://www.baidu.com?key=\u4f60\u597d"}

今度はエスケープです。文字は削除されましたが、中国語の文字は再び 16 になります。システム、エスケープ文字を削除して中国語を正常に表示したいです。

*nix のような権限管理に触発されて、XOR 演算が使用できることがわかりました

//代码$url = " 
$data = ["url" => $url];
echo json_encode($data, JSON_UNESCAPED_UNICODE ^ JSON_UNESCAPED_SLASHES);
//输出
{"url":"https://www.baidu.com?key=你好"}

仕事を終わらせるために。

さらに、

JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES の特殊性により、これらはすべて 1 < < n に渡されるためです。 (nは整数)が得られるので、XOR演算だけでなく直接足し算も使えます

//该等式为true((1<<1) ^ (1<<2)) === ((1<<1) + (1<<2))

おすすめ関連記事:

PHP詳細名前空間のこの部分の説明

php は、curl を使用して POST アドレスを受け取る方法、つまりインターフェイスを作成する方法

以上がPHP での json_encode の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。