ホームページ  >  記事  >  バックエンド開発  >  PHP JSON 中国語_PHP チュートリアル

PHP JSON 中国語_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:52:07895ブラウズ

php (php > 5.2) の json_encode() 組み込み関数を使用すると、php のデータを転送して他の言語でうまく使用できます。

この関数の機能は、数値をjsonデータ保存形式に変換することです。

[php]
$arr = 配列
(
'名前'=>'シア'、
「年齢」=>20
);

$jsonencode = json_encode($arr); $jsonencode をエコーし​​ます。 ?>

プログラムの実行結果は次のとおりです:

[php]

{"名前":null,"年齢":20}

○中国語では json_encode 関数が NULL でエンコードされているのは、フロントエンドとの連携を密にするため、JSON が UTF-8 コードのみをサポートしているためだと思います。 。
[php]

$array = 配列
(
'title'=>iconv('gb2312','utf-8','これは中国語のタイトルです'),
'body'=>'abcd...'
);

エコー json_encode($array); ?>

このプログラムを実行した結果は次のようになります:

[php] {"タイトル":"u8fd9u91ccu662fu4e2du6587u6807u9898","本文":"abcd..."}

json_encode または U2353 が出現した後、配列内のすべての中国語が消えました。

解決策は、urlencode() 関数を使用して以下を処理することです。json_encode の前に、urlencode() を使用してすべての配列の内容を処理し、次に json_encode() を使用してそれを JSON 文字列に変換し、最後に urldecode() を使用します。 ) をエンコードして中国語が転送されます。

[php]
/*************************************************** * **********
* www.2cto.com
* 特定の関数を使用して配列内のすべての要素を処理します
* @param string &$array 処理対象の文字列
* @param string $function 実行する関数
* @return boolean $apply_to_keys_only キーにも適用されるかどうか
* @アクセス公開
*
************************************************* * ***********/
function arrayRecursive(&$array, $function, $apply_to_keys_only = false)
{
    静的 $recursive_counter = 0; 
    if (++$recursive_counter > 1000) {
        die('深い再帰攻撃の可能性'); 
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_only); 
        } その他 {
            $array[$key] = $function($value); 
        }
  
        if ($apply_to_keys_only && is_string($key)) {
            $new_key = $function($key); 
            if ($new_key != $key) {
                $array[$new_key] = $array[$key]; 
                unset($array[$key]); 
            }
        }
    }
    $recursive_counter--; 
}
  
/*************************************************** * **********
*
* 配列を JSON 文字列に変換します (中国語と互換性があります)
* @param array $array 変換する配列
* @return string 変換されたjson文字列
* @アクセス公開
*
************************************************* * ***********/
関数 JSON($array) {
    arrayRecursive($array, 'urlencode', true); 
    $json = json_encode($array); 
    urldecode($json)を返します; 
}
 
$array = 配列
       (
          '名前'=>'希亚',
          「年齢」=>20
       ); 
 
 
エコー JSON($array); 
?> 

今回は成功しました、运行結果如下:
[php] plaincopy を表示
{"名前":"希亚","年齢":"20"}
作者:wolinxuebin

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478136.html技術記事 php 内で json_encode() 内に配置された関数 (php 5.2) を使用すると、php 内のデータを他の言語に最適に転送でき、これを使用できます。 この関数の機能は、数値を j...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。