Dengan pembangunan Internet, kesukaran pembangunan laman web juga semakin meningkat, dan php, sebagai bahasa yang sangat biasa digunakan, digunakan oleh semakin ramai pembangun. Walau bagaimanapun, dalam pembangunan PHP, kadangkala kami menghadapi beberapa masalah, seperti aksara bercelaru apabila menerima parameter permintaan URL. Jadi bagaimana untuk menyelesaikan masalah ini? Seterusnya, mari kita menganalisis langkah demi langkah.
Pertama, kita perlu memahami beberapa kaedah pengekodan URL biasa. Kaedah pengekodan biasa termasuk pengekodan URL dan pengekodan base64. Antaranya, pengekodan URL terutamanya menukar aksara tertentu ke dalam bentuk %xx untuk memudahkan penghantaran dalam protokol http. Pengekodan Base64 adalah untuk mengekod data teks asal dan menukarnya kepada bentuk lain di bawah peraturan tertentu, yang boleh digunakan untuk penghantaran teks, gambar dan data lain dalam rangkaian.
Jadi, mengapakah aksara bercelaru muncul apabila menerima parameter permintaan URL? Sebenarnya, ini kerana dalam penghantaran URL, kaedah pengekodan seperti bahasa Cina disimpan dalam bentuk pengekodan tertentu, dan fungsi urldecode PHP hanya boleh menyahkod borang pengekodan aplikasi/x-www-form-urlencoded Untuk bentuk pengekodan lain Ia tidak boleh dinyahkod, mengakibatkan aksara bercelaru.
Untuk menyelesaikan masalah ini, kita perlu menggunakan dua sambungan mbstring dan iconv dalam php. Sambungan mbstring digunakan terutamanya untuk memproses aksara berbilang bait dan boleh menyokong pengekodan aksara dalam berbilang bahasa manakala sambungan iconv digunakan terutamanya untuk penukaran set aksara. Kedua-dua sambungan ini boleh digunakan bersama untuk membantu kami menyelesaikan masalah parameter permintaan URL yang bercelaru.
Sekarang, mari lihat contoh khusus untuk pemahaman yang lebih baik.
Andaikan kami mempunyai permintaan url berikut: https://www.example.com/index.php?name=%E6%B5%8B%E8%AF%95&age=18
di mana , nilai nama ialah "ujian", dan kaedah pengekodan yang digunakan ialah pengekodan utf-8. Jika $_GET[‘name’] digunakan secara langsung untuk mendapatkan nilai parameter nama, aksara bercelaru akan muncul. Pada masa ini, kita boleh menggunakan kod berikut untuk menyahkod:
$name = $_GET['name'];
$name = urldecode($name);
$name = iconv( ' utf-8', 'gbk', $name);
$name = mb_convert_encoding($name, 'utf-8', 'gbk');
Antaranya, baris pertama kod adalah untuk mendapatkan nama Nilai parameter, baris kedua kod adalah untuk menyahkod url nilai parameter nama, menyahkod %E6%B5%8B%E8%AF%95 ke dalam "ujian" Cina, baris ketiga kod adalah untuk menukar format pengekodan daripada format utf- 8 kepada format gbk, baris keempat kod adalah untuk menukar format pengekodan daripada format gbk kepada format utf-8, dan akhirnya "ujian" Cina yang betul akan diperolehi.
Perlu diingatkan di sini bahawa jika kaedah pengekodan lain digunakan, seperti pengekodan gb2312, maka 'gbk' dalam baris ketiga kod perlu ditukar kepada 'gb2312', jika tidak, aksara bercelaru akan tetap muncul.
Selain itu, kami juga boleh menggunakan kaedah yang sama untuk menyahkod parameter lain dalam permintaan url. Kod khusus adalah seperti berikut:
$age = $_GET['age'];
$age = urldecode($age);
$age = iconv('utf-8', 'gbk' , $age);
$age = mb_convert_encoding($age, 'utf-8', 'gbk');
Begitu juga, jika kaedah pengekodan lain digunakan, anda perlu menukar ' gbk' ditukar kepada kaedah pengekodan yang sepadan.
Ringkasnya, jika kami menghadapi masalah parameter permintaan URL yang bercelaru, kami boleh menyelesaikannya melalui dua sambungan mbstring dan iconv. Proses operasi khusus ialah: mula-mula menyahkod URL nilai parameter, kemudian menukar format pengekodan daripada kaedah pengekodan permintaan kepada kaedah pengekodan sasaran, dan akhirnya menukar format pengekodan kembali kepada kaedah pengekodan permintaan. Disebabkan oleh keterbatasan ruang, hasil operasi yang diterangkan di sini mungkin tidak menyeluruh Adalah disyorkan agar anda merujuk kepada lebih banyak bahan rujukan apabila menggunakannya untuk memastikan ketepatan dan keberkesanan.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah parameter permintaan url bercelaru yang diterima oleh PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!