Menyahkod Jujukan Escape Unicode dalam PHP
Jika anda berurusan dengan urutan melarikan diri Unicode seperti "u00ed" dalam PHP, anda perlu satu cara untuk menyahkodnya kepada aksara yang dikodkan UTF-8 yang betul. Fungsi preg_replace_callback() menyediakan penyelesaian kepada masalah ini.
Untuk menyahkod jujukan melarikan diri Unikod menggunakan preg_replace_callback(), ikut langkah berikut:
$str = preg_replace_callback('/\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); }, $str);
Corak ungkapan biasa ini sepadan dengan jujukan melarikan diri Unikod seperti "u00ed" dan menangkap titik kod heksadesimal dalam kurungan. Fungsi panggil balik yang sepadan kemudiannya menggunakan fungsi pack() dan mb_convert_encoding() untuk menukar titik kod perenambelasan kepada aksara UTF-8 yang sepadan.
Jika anda menggunakan gaya C/C /Java/Json. Urutan pelarian berasaskan UTF-16, anda boleh menggunakan versi ungkapan biasa yang sedikit berbeza:
$str = preg_replace_callback('/\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UTF-16BE'); }, $str);
Oleh menyatakan 'UTF-16BE' sebagai pengekodan untuk mb_convert_encoding(), anda memastikan bahawa format big-endian UTF-16 dinyahkodkan dengan betul kepada UTF-8.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyahkod urutan pelarian Unicode dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!