PHP は、Web アプリケーションの構築に使用される人気のあるサーバー側プログラミング言語です。 JSON (JavaScript Object Notation) は軽量のデータ交換形式です。人間が理解しやすく、機械が処理しやすいテキスト形式です。 PHP には JSON データを処理するための組み込み関数があり、JSON 形式を PHP 配列に変換する関数を提供します。ただし、JSONデータに漢字が含まれる場合は文字化けが発生します。この記事では、漢字を含むJSON形式をPHP配列に変換し、文字化けを解決する方法を紹介します。
JSON 形式は、JavaScript 言語の構文に基づく軽量のデータ交換形式ですが、他のプログラミング言語でも使用できます。 。 JSON はキーと値のペアで構成され、各キーと値のペアはカンマで区切られ、キーと値はコロンで区切られます。 JSON では配列とオブジェクトの両方を使用できます。以下は JSON 形式の例です。
{ "name": "张三", "age": 25, "gender": "男", "hobbies": ["游泳", "唱歌", "阅读"], "address": { "province": "广东", "city": "深圳" } }
PHP の json_decode 関数を使用して、JSON 形式を PHP 配列に変換できます。構文は次のとおりです:
mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
このうち、パラメータ $json は JSON 形式の文字列、$assoc はオプションのパラメータで、値が TRUE の場合は連想配列が返され、そうでない場合は連想配列が返されます。オブジェクトが返されます。 $ Depth はオプションのパラメータで、再帰の最大深さを指定します。デフォルトは 512 です。 $options もオプションのパラメーターであり、JSON デコード オプションを指定します。デフォルトは 0 です。
JSON 形式を PHP 配列に変換する例を次に示します。
$json = '{"name": "张三", "age": 25, "gender": "男"}'; $arr = json_decode($json, true); print_r($arr);
出力結果は次のとおりです。
Array ( [name] => 张三 [age] => 25 [gender] => 男 )
ただし、JSON データに漢字が含まれる場合は文字化けが発生します。これは、PHP がデフォルトで JSON を UTF-8 形式にエンコードし、UTF-8 では中国語の文字が 3 バイトを占めるためです。したがって、JSON データに中国語の文字が含まれている場合は、変換プロセス中に処理する必要があります。
PHP では、iconv 関数を使用してさまざまな文字セットを変換できます。 iconv 関数の構文は次のとおりです。
string iconv ( string $in_charset , string $out_charset , string $str )
このうち、$in_charset パラメータはソース文字セット、$out_charset パラメータはターゲット文字セット、$str パラメータは変換対象の文字列です。変換された。以下は、JSON 形式を PHP 配列に変換し、文字化けの問題を解決する例です:
$json = '{"name": "张三", "age": 25, "gender": "男"}'; $json = iconv('UTF-8', 'GBK//IGNORE', $json); // 将JSON转换为GBK格式 $arr = json_decode($json, true); $arr = array_map(function($value) { return iconv('GBK', 'UTF-8//IGNORE', $value); // 将数组转换为UTF-8格式 }, $arr); print_r($arr);
出力結果は次のとおりです:
Array ( [name] => 张三 [age] => 25 [gender] => 男 )
上記の例では、最初に iconv を使用します。 JSON形式の文字列をUTF-8からGBK形式に変換する関数です。次に、 json_decode 関数を使用して、JSON 形式を PHP 配列に変換します。最後に、array_map 関数を使用して、配列内の各値を GBK 形式から UTF-8 形式に変換します。
iconv 関数の使用に加えて、mb_convert_encoding 関数を使用して文字エンコーディングの変換を実行することもできます。 mb_convert_encoding 関数は、パラメータが若干異なることを除いて、iconv 関数に似ています。以下は、mb_convert_encoding 関数を使用した文字エンコード変換の例です。
$json = '{"name": "张三", "age": 25, "gender": "男"}'; $json = mb_convert_encoding($json, 'GBK', 'UTF-8'); // 将JSON转换为GBK格式 $arr = json_decode($json, true); $arr = array_map(function($value) { return mb_convert_encoding($value, 'UTF-8', 'GBK'); // 将数组转换为UTF-8格式 }, $arr); print_r($arr);
出力は前の例と同じです。
PHP では、json_decode 関数を使用して JSON 形式を PHP 配列に変換できます。ただし、JSONデータに漢字が含まれる場合は文字化けが発生します。この問題を解決するには、iconv 関数または mb_convert_encoding 関数を使用して、JSON 形式を指定された文字セットに変換し、それを PHP 配列に変換します。このようにして、中国語の文字を含む JSON 形式を正しく処理できます。
以上がPHPで漢字を含むJSON形式を配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。