Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie das JSON-Format mit chinesischen Zeichen in ein Array in PHP

So konvertieren Sie das JSON-Format mit chinesischen Zeichen in ein Array in PHP

PHPz
PHPzOriginal
2023-04-20 09:08:13705Durchsuche

PHP ist eine beliebte serverseitige Programmiersprache, die zum Erstellen von Webanwendungen verwendet wird. JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat. Es handelt sich um ein Textformat, das für Menschen leicht zu verstehen und für Maschinen leicht zu verarbeiten ist. PHP verfügt über integrierte Funktionen zur Verarbeitung von JSON-Daten und bietet Funktionen zum Konvertieren des JSON-Formats in PHP-Arrays. Wenn die JSON-Daten jedoch chinesische Zeichen enthalten, werden verstümmelte Zeichen angezeigt. In diesem Artikel stellen wir vor, wie man das JSON-Format mit chinesischen Zeichen in ein PHP-Array konvertiert und das verstümmelte Problem löst.

  1. Was ist das JSON-Format?

Das JSON-Format ist ein leichtes Datenaustauschformat, das auf der Syntax der JavaScript-Sprache basiert, aber auch mit anderen Programmiersprachen verwendet werden kann. JSON besteht aus Schlüssel-Wert-Paaren. Jedes Schlüssel-Wert-Paar wird durch ein Komma getrennt, und Schlüssel und Wert werden durch einen Doppelpunkt getrennt. In JSON können sowohl Arrays als auch Objekte verwendet werden. Das Folgende ist ein Beispiel für das JSON-Format:

{
    "name": "张三",
    "age": 25,
    "gender": "男",
    "hobbies": ["游泳", "唱歌", "阅读"],
    "address": {
        "province": "广东",
        "city": "深圳"
    }
}
  1. JSON zu PHP-Array

Wir können die json_decode-Funktion von PHP verwenden, um das JSON-Format in ein PHP-Array zu konvertieren. Seine Syntax lautet wie folgt:

mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )

Darunter ist der Parameter $json eine Zeichenfolge im JSON-Format und $assoc ein optionaler Parameter. Wenn sein Wert TRUE ist, wird ein assoziatives Array zurückgegeben, andernfalls wird ein Objekt zurückgegeben . $ Depth ist ein optionaler Parameter, der die maximale Rekursionstiefe angibt, die standardmäßig 512 beträgt. $options ist ebenfalls ein optionaler Parameter, der JSON-Dekodierungsoptionen angibt. Der Standardwert ist 0.

Das Folgende ist ein Beispiel für die Konvertierung des JSON-Formats in ein PHP-Array:

$json = '{"name": "张三", "age": 25, "gender": "男"}';
$arr = json_decode($json, true);
print_r($arr);

Das Ausgabeergebnis lautet wie folgt:

Array
(
    [name] => 张三
    [age] => 25
    [gender] => 男
)
  1. Verarbeitung des JSON-Formats mit chinesischen Zeichen

Wenn die JSON-Daten jedoch chinesische Zeichen enthalten, werden die Zeichen verstümmelt wird erscheinen. Dies liegt daran, dass PHP JSON standardmäßig im UTF-8-Format kodiert und chinesische Zeichen in UTF-8 3 Bytes belegen. Wenn unsere JSON-Daten chinesische Zeichen enthalten, müssen diese daher während des Konvertierungsprozesses verarbeitet werden.

In PHP können wir die Funktion iconv verwenden, um verschiedene Zeichensätze zu konvertieren. Die Syntax der iconv-Funktion lautet wie folgt:

string iconv ( string $in_charset , string $out_charset , string $str )

Unter diesen ist der Parameter $in_charset der Quellzeichensatz, der Parameter $out_charset der Zielzeichensatz und der Parameter $str die zu konvertierende Zeichenfolge. Das Folgende ist ein Beispiel für die Konvertierung des JSON-Formats in ein PHP-Array und die Lösung des verstümmelten Problems:

$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);

Das Ausgabeergebnis lautet wie folgt:

Array
(
    [name] => 张三
    [age] => 25
    [gender] => 男
)

Im obigen Beispiel verwenden wir zunächst die Funktion iconv, um die JSON-Formatzeichenfolge daraus zu konvertieren UTF-8-zu-GBK-Format. Verwenden Sie dann die Funktion json_decode, um das JSON-Format in ein PHP-Array zu konvertieren. Schließlich verwenden wir die Funktion array_map, um jeden Wert im Array vom GBK-Format in das UTF-8-Format zu konvertieren.

Zusätzlich zur Verwendung der iconv-Funktion können wir auch die Funktion mb_convert_encoding verwenden, um Zeichenkodierungen zu konvertieren. Die Funktion mb_convert_encoding ähnelt der Funktion iconv, unterscheidet sich jedoch geringfügig von den Parametern. Das Folgende ist ein Beispiel für die Zeichenkodierungskonvertierung mit der Funktion 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);

Die Ausgabe ist die gleiche wie im vorherigen Beispiel.

  1. Zusammenfassung

In PHP können wir die Funktion json_decode verwenden, um das JSON-Format in ein PHP-Array zu konvertieren. Wenn die JSON-Daten jedoch chinesische Zeichen enthalten, werden verstümmelte Zeichen angezeigt. Um dieses Problem zu lösen, können wir die Funktion iconv oder die Funktion mb_convert_encoding verwenden, um das JSON-Format in den angegebenen Zeichensatz zu konvertieren und es dann in ein PHP-Array zu konvertieren. Auf diese Weise können wir das JSON-Format mit chinesischen Schriftzeichen korrekt verarbeiten.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie das JSON-Format mit chinesischen Zeichen in ein Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn