Apabila menulis aplikasi web menggunakan PHP, anda selalunya perlu menangani pop timbul makluman dalam kod JavaScript bahagian hadapan. Walau bagaimanapun, apabila menggunakan aksara bukan ASCII seperti bahasa Cina dalam tetingkap pop timbul makluman, aksara bercelaru mungkin berlaku kerana amaran menggunakan pengekodan ASCII secara lalai. Artikel ini akan memperkenalkan cara untuk menukar kod tetingkap pop timbul amaran dalam PHP dan menyelesaikan masalah aksara Cina yang kacau.
1. Gunakan fungsi JavaScript escape dan unescape untuk transcoding
Fungsi JavaScript escape dan unescape digunakan untuk mengekod dan menyahkod aksara bukan ASCII dalam rentetan. Oleh itu, rentetan dalam tetingkap pop timbul amaran boleh dikodkan menggunakan fungsi melarikan diri dalam PHP, dan fungsi unescape boleh digunakan dalam kod JavaScript bahagian hadapan untuk menyahkod, dengan itu menyelesaikan masalah aksara Cina yang kacau.
Kod khusus adalah seperti berikut:
Kod PHP:
$msg = "你好,世界!"; $escaped_msg = escape($msg); echo "<script>alert(unescape('" . $escaped_msg . "'));</script>";
Kod JavaScript:
function escape(str) { var res = ''; for (var i = 0; i < str.length; i++) { if (str.charAt(i) === '@') { res += '@@'; } else if (escape(str.charAt(i)).length > 1) { res += '@' + escape(str.charAt(i)).substring(1); } else { res += str.charAt(i); } } return res; } function unescape(str) { var res = ''; for (var i = 0; i < str.length;) { if (str.charAt(i) === '@') { if (str.charAt(i + 1) === '@') { res += '@'; i += 2; } else { res += unescape('%' + str.substring(i + 1, i + 3)); i += 3; } } else { res += str.charAt(i); i++; } } return res; }
2. Gunakan fungsi JavaScript encodeURIComponent dan decodeURIComponent for conversion Code
Fungsi JavaScript encodeURIComponent dan decodeURIComponent digunakan untuk mengekod dan menyahkod aksara Cina dalam URL masing-masing. Oleh itu, anda juga boleh menggunakan fungsi encodeURIComponent untuk mengekod rentetan dalam tetingkap pop timbul amaran dalam PHP, dan menggunakan fungsi decodeURIComponent untuk menyahkodnya dalam kod JavaScript bahagian hadapan untuk menyelesaikan masalah aksara Cina yang kacau.
Kod khusus adalah seperti berikut:
Kod PHP:
$msg = "你好,世界!"; $encoded_msg = rawurlencode($msg); echo "<script>alert(decodeURIComponent('" . $encoded_msg . "'));</script>";
Kod JavaScript:
function decodeURIComponent(str) { var res = ''; try { res = decodeURIComponent(str); } catch (e) { res = str; } return res; }
Ringkasan
Artikel ini memperkenalkan Dua cara untuk melaksanakan transkod amaran dalam PHP ialah menggunakan fungsi JavaScript escape dan unescape, dan menggunakan fungsi JavaScript encodeURIComponent dan decodeURIComponent. Kedua-dua kaedah ini boleh menyelesaikan masalah bercelaru apabila aksara bukan ASCII seperti bahasa Cina digunakan dalam tetingkap pop timbul amaran. Perlu diingatkan bahawa keserasian dan keselamatan kod perlu diberi perhatian apabila menggunakan kaedah ini.
Atas ialah kandungan terperinci Bagaimana untuk menukar kod tetingkap pop timbul amaran dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!