Heim >Backend-Entwicklung >PHP-Tutorial >Wie entfernt man Akzente aus Zeichen in PHP-Strings für die URL-Verwendung?
Beim Konvertieren von Zeichen in einem PHP-String in ihre ASCII-Entsprechungen, um den String für die URL-Verwendung geeignet zu machen, treten häufig Probleme auf im Zusammenhang mit Zeichenkodierungen. So können Sie dieses Problem angehen:
Bestätigen Sie, dass Ihr Server über die korrekte Implementierung von iconv verfügt. Die iconv-Funktion von PHP basiert auf der Bibliothek „libiconv“, nicht auf der Version „glibc“. Wenn Probleme wie das Ersetzen von Akzentzeichen durch Fragezeichen auftreten, überprüfen Sie diese Konfiguration mit der Funktion phpinfo().
Verwenden Sie setlocale(LC_ALL, "en_US.utf8"), um das Gebietsschema auf "en_US.utf8" festzulegen und sicherzustellen, dass die Eingabezeichenfolge in UTF-8-Kodierung vorliegt. Verwenden Sie die Funktion mb_check_encoding() von PHP, um diese Codierung zu validieren.
Verwenden Sie iconv("utf-8", "ascii//TRANSLIT", $input), um Zeichen von UTF-8 nach ASCII zu transliterieren, indem Sie den Transliterationsmodus „TRANSLIT“ verwenden. Dadurch sollten Akzente und Sonderzeichen entfernt werden.
Wenn Sie keinen Zugriff auf die „libiconv“-Implementierung von iconv haben, können Sie die folgenden PHP-String-Manipulationsfunktionen verwenden, um Akzente zu entfernen:
Erwägen Sie die Verwendung einer benutzerdefinierten Funktion wie der unten gezeigten WordPress-Implementierung, die Zeichentabellen verwendet, um Zeichen mit Akzent in ihre einfachen ASCII-Gegenstücke zu übersetzen:
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',
Das obige ist der detaillierte Inhalt vonWie entfernt man Akzente aus Zeichen in PHP-Strings für die URL-Verwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!