Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menukar format JSON dengan aksara Cina ke dalam tatasusunan dalam PHP

Bagaimana untuk menukar format JSON dengan aksara Cina ke dalam tatasusunan dalam PHP

PHPz
Lepaskan: 2023-04-20 09:34:46
asal
758 orang telah melayarinya

PHP ialah bahasa pengaturcaraan sebelah pelayan yang popular digunakan untuk membina aplikasi web. JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan. Ia adalah format teks yang mudah difahami oleh manusia dan diproses oleh mesin. PHP mempunyai fungsi terbina dalam untuk memproses data JSON dan menyediakan fungsi untuk menukar format JSON kepada tatasusunan PHP. Walau bagaimanapun, apabila data JSON mengandungi aksara Cina, aksara bercelaru akan muncul. Dalam artikel ini, kami akan memperkenalkan cara menukar format JSON dengan aksara Cina ke dalam tatasusunan PHP dan menyelesaikan masalah bercelaru.

  1. Apakah format JSON

Format JSON ialah format pertukaran data ringan yang berdasarkan sintaks bahasa JavaScript, tetapi juga boleh digunakan dengan bahasa pengaturcaraan lain . JSON terdiri daripada pasangan nilai kunci, setiap pasangan nilai kunci dipisahkan dengan koma dan kunci dan nilai dipisahkan dengan titik bertindih. Kedua-dua tatasusunan dan objek boleh digunakan dalam JSON. Berikut ialah contoh format JSON:

{
    "name": "张三",
    "age": 25,
    "gender": "男",
    "hobbies": ["游泳", "唱歌", "阅读"],
    "address": {
        "province": "广东",
        "city": "深圳"
    }
}
Salin selepas log masuk
  1. tatasusunan JSON ke PHP

Kita boleh menggunakan fungsi json_decode PHP untuk menukar format JSON kepada tatasusunan PHP. Sintaksnya adalah seperti berikut:

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

Antaranya, parameter $json ialah rentetan dalam format JSON dan $assoc ialah parameter pilihan Apabila nilainya TRUE, tatasusunan bersekutu akan dikembalikan, jika tidak objek akan dikembalikan. $depth ialah parameter pilihan yang menentukan kedalaman rekursi maksimum, yang lalai kepada 512. $options juga merupakan parameter pilihan, menentukan pilihan penyahkodan JSON Lalai ialah 0.

Berikut ialah contoh menukar format JSON kepada tatasusunan PHP:

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

Hasil output adalah seperti berikut:

Array
(
    [name] => 张三
    [age] => 25
    [gender] => 男
)
Salin selepas log masuk
Salin selepas log masuk
  1. Memproses JSON format dengan aksara Cina

Walau bagaimanapun, apabila data JSON mengandungi aksara Cina, aksara bercelaru akan muncul. Ini kerana PHP mengekodkan JSON ke dalam format UTF-8 secara lalai, dan aksara Cina menduduki 3 bait dalam UTF-8. Oleh itu, jika data JSON kami mengandungi aksara Cina, ia perlu diproses semasa proses penukaran.

Dalam PHP, kita boleh menggunakan fungsi iconv untuk menukar set aksara yang berbeza. Sintaks fungsi iconv adalah seperti berikut:

string iconv ( string $in_charset , string $out_charset , string $str )
Salin selepas log masuk

Antaranya, parameter $in_charset ialah set aksara sumber, parameter $out_charset ialah set aksara sasaran dan parameter $str ialah rentetan untuk ditukar. Berikut ialah contoh menukar format JSON kepada tatasusunan PHP dan menyelesaikan masalah bercelaru:

$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);
Salin selepas log masuk

Hasil output adalah seperti berikut:

Array
(
    [name] => 张三
    [age] => 25
    [gender] => 男
)
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh di atas, kami mula-mula gunakan fungsi iconv Tukar rentetan berformat JSON daripada format UTF-8 kepada format GBK. Kemudian, gunakan fungsi json_decode untuk menukar format JSON kepada tatasusunan PHP. Akhir sekali, kami menggunakan fungsi array_map untuk menukar setiap nilai dalam tatasusunan daripada format GBK kepada format UTF-8.

Selain menggunakan fungsi iconv, kita juga boleh menggunakan fungsi mb_convert_encoding untuk menukar pengekodan aksara. Fungsi mb_convert_encoding adalah serupa dengan fungsi iconv, kecuali parameternya berbeza sedikit. Berikut ialah contoh penukaran pengekodan aksara menggunakan fungsi 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);
Salin selepas log masuk

Output adalah sama seperti contoh sebelumnya.

  1. Ringkasan

Dalam PHP, kita boleh menggunakan fungsi json_decode untuk menukar format JSON kepada tatasusunan PHP. Walau bagaimanapun, apabila data JSON mengandungi aksara Cina, aksara bercelaru akan muncul. Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi iconv atau fungsi mb_convert_encoding untuk menukar format JSON kepada set aksara yang ditentukan dan kemudian menukarnya kepada tatasusunan PHP. Dengan cara ini, kami boleh mengendalikan format JSON dengan aksara Cina dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk menukar format JSON dengan aksara Cina ke dalam tatasusunan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan