Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah anda mengalih keluar aksen daripada aksara dalam rentetan PHP untuk kegunaan URL?
Apabila menukar aksara dalam rentetan PHP kepada setara ASCII untuk menjadikan rentetan itu sesuai untuk kegunaan URL, adalah perkara biasa untuk menghadapi masalah berkaitan dengan pengekodan aksara. Begini cara untuk menangani isu ini:
Sahkan bahawa pelayan anda mempunyai pelaksanaan iconv yang betul. Fungsi iconv PHP bergantung pada perpustakaan "libiconv", bukan versi "glibc". Jika anda menghadapi masalah seperti aksara beraksen digantikan dengan tanda soal, sahkan konfigurasi ini menggunakan fungsi phpinfo().
Gunakan setlocale(LC_ALL, "en_US.utf8") untuk menetapkan tempattempat kepada "en_US.utf8" dan pastikan rentetan input berada dalam pengekodan UTF-8. Gunakan fungsi mb_check_encoding() PHP untuk mengesahkan pengekodan ini.
Gunakan iconv("utf-8", "ascii//TRANSLIT", $input) untuk mengalih huruf daripada UTF-8 kepada ASCII menggunakan mod transliterasi "TRANSLIT". Ini sepatutnya mengalih keluar aksen dan aksara khas.
Jika anda tidak mempunyai akses kepada pelaksanaan "libiconv" iconv, anda boleh menggunakan fungsi manipulasi rentetan PHP berikut untuk mengalih keluar aksen:
Pertimbangkan untuk menggunakan fungsi tersuai seperti pelaksanaan WordPress yang ditunjukkan di bawah, yang menggunakan peta aksara untuk menterjemah aksara beraksen kepada rakan ASCII biasa mereka:
function remove_accents($string) { if ( !preg_match('/[\x80-\xff]/', $string) ) return $string; $chars = array( // Decompositions for Latin-1 Supplement chr(195).chr(128) => 'A', chr(195).chr(129) => 'A', chr(195).chr(130) => 'A', chr(195).chr(131) => 'A', chr(195).chr(132) => 'A', chr(195).chr(133) => 'A', chr(195).chr(135) => 'C', chr(195).chr(136) => 'E', chr(195).chr(137) => 'E', chr(195).chr(138) => 'E', chr(195).chr(139) => 'E', chr(195).chr(140) => 'I', chr(195).chr(141) => 'I', chr(195).chr(142) => 'I', chr(195).chr(143) => 'I', chr(195).chr(145) => 'N', chr(195).chr(146) => 'O', chr(195).chr(147) => 'O', chr(195).chr(148) => 'O', chr(195).chr(149) => 'O', chr(195).chr(150) => 'O', chr(195).chr(153) => 'U', chr(195).chr(154) => 'U', chr(195).chr(155) => 'U', chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y', chr(195).chr(159) => 's', chr(195).chr(160) => 'a', chr(195).chr(161) => 'a', chr(195).chr(162) => 'a', chr(195).chr(163) => 'a', chr(195).chr(164) => 'a', chr(195).chr(165) => 'a', chr(195).chr(167) => 'c', chr(195).chr(168) => 'e', chr(195).chr(169) => 'e', chr(195).chr(170) => 'e', chr(195).chr(171) => 'e', chr(195).chr(172) => 'i', chr(195).chr(173) => 'i', chr(195).chr(174) => 'i', chr(195).chr(175) => 'i', chr(195).chr(177) => 'n', chr(195).chr(178) => 'o', chr(195).chr(179) => 'o', chr(195).chr(180) => 'o', chr(195).chr(181) => 'o', chr(195).chr(182) => 'o', chr(195).chr(182) => 'o', chr(195).chr(185) => 'u', chr(195).chr(186) => 'u', chr(195).chr(187) => 'u', chr(195).chr(188) => 'u', chr(195).chr(189) => 'y', chr(195).chr(191) => 'y', // Decompositions for Latin Extended-A chr(196).chr(128) => 'A', chr(196).chr(129) => 'a', chr(196).chr(130) => 'A', chr(196).chr(131) => 'a', chr(196).chr(132) => 'A', chr(196).chr(133) => 'a', chr(196).chr(134) => 'C', chr(196).chr(135) => 'c', chr(196).chr(136) => 'C', chr(196).chr(137) => 'c', chr(196).chr(138) => 'C', chr(196).chr(139) => 'c', chr(196).chr(140) => 'C', chr(196).chr(141) => 'c', chr(196).chr(142) => 'D', chr(196).chr(143) => 'd', chr(196).chr(144) => 'D', chr(196).chr(145) => 'd', chr(196).chr(146) => 'E', chr(196).chr(147) => 'e', chr(196).chr(148) => 'E', chr(196).chr(149) => 'e', chr(196).chr(150) => 'E', chr(196).chr(151) => 'e', chr(196).chr(152) => 'E', chr(196).chr(153) => 'e', chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
Atas ialah kandungan terperinci Bagaimanakah anda mengalih keluar aksen daripada aksara dalam rentetan PHP untuk kegunaan URL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!