ホームページ > バックエンド開発 > PHPチュートリアル > PHP で json_encode 関数を使用するときに中国語をエスケープしない問題の解決策、_PHP チュートリアル

PHP で json_encode 関数を使用するときに中国語をエスケープしない問題の解決策、_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:14:08
オリジナル
837 人が閲覧しました

PHPがjson_encode関数を使用するときに中国語をエスケープしないための解決策、

この記事の例では、PHP で json_encode 関数を使用するときに中国語をエスケープしないための解決策について説明します。参考のためにみんなで共有してください。具体的な方法は以下の通りです

json_encode 関数は、gbk の中国語文字を変換したり、スペースに直接変換したりすることはありません。この記事では、json のエスケープされていない中国語の問題に対処する方法についていくつかのヒントを紹介します。

PHP に付属の json_encode() 関数を呼び出すと、中国語の文字が見つかったときに、その中国語の文字がエスケープされます。例:

コードをコピーします コードは次のとおりです:
echo json_encode(array('Hello'));
// 出力: ["u4f60u597d"]

これは非常に迷惑で、まるで意味不明のことです。JSON 標準では、「すべての UNICODE 文字」をエスケープするようには規定されていません。 このエスケープを無効にする方法は? 答えは、PHP 独自の json_encode() ではこの機能を無効にできないため (バージョン 5.4.0 より前では、JSON_UNESCAPED_UNICODE オプションを追加できます)、新しい JSON ライブラリに変更することしかできません。簡単にするために、json_encode() を実装するために数十行のコードを記述しただけです。

コードをコピーします コードは次のとおりです:
class Util
{
静的関数 json_encode($input){
// PHP 5.4.0 以降、このオプションが追加されました。
If(定義('JSON_UNESCAPED_UNICODE')){
return json_encode($input, JSON_UNESCAPED_UNICODE);
}
if(is_string($input)){
$text = $input;
$text = str_replace('\', '\\', $text);
$text = str_replace(
array("r", "n", "t", """),
array('r', 'n', 't', '\"'),
$text);
return '"' . $text . '"';
}else if(is_array($input) || is_object($input)){
$arr = array();
$is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1));
foreach($input as $k=>$v){
If($is_obj){
$arr[] = self::json_encode($k) ':' 。 }その他{
$arr[] = self::json_encode($v);
}
}
If($is_obj){
return '{' . join(',', $arr) '}';
}その他{
return '[' . join(',', $arr) ';
}
}その他{
$input を返します '';
}
}
}

連想配列(is_obj)の判定など、考慮されていない部分については、問題が発生したときに話しましょう。クラスが気に入らない場合は、自分で純粋関数に変換して名前を変更してください。

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/910599.html技術記事 PHP が json_encode 関数を使用するときに中国語がエスケープされない場合の解決策 この記事では、PHP が json_encode 関数を使用する場合に中国語がエスケープされない場合の解決策について説明します。参考のためにみんなで共有してください。ツール...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート