Tag "iconv"

Ä zu AE – Umlaute mit PHP umwandeln

15. Oktober 2008

Alle Nase lang muss man als Webdeveloper Sonderzeichen gärtnern. Muss man in PHP Umlaute loswerden, ein „ß“ verschwinden lassen, einen dieser Ausnahmebuchstaben tilgen – um z.B. schicke URLs wahr werden zu lassen. Oft muss es eben ACSII sein, und das ist halt ein beschissen kleiner Zeichenvorrat von 128 Zeichen. Da ist an Umlaute nicht zu denken.

Das kann man machen, indem man sich große Tabellen anlegt und weitläufiges Suchen & Ersetzen durchführt. Ein „ä“ wird da zu „ae“, ein „ß“ zu „ss“ und so fort. Will man das richtig machen, kann man da herrlich lange Zeit mit dem Tippen von Vorher/Nachher-Zuordnungen verbringen. Super. Muss man das nun unbedingt selber durchexerzieren?

Kann PHP das vielleicht ab Werk selber erledigen? Ja, doch! Das iconv-Modul bringt so einiges mit, um Zeichenketten zwischen Kodierungen hin- und herzuwandeln. Vor allem beherrscht die Funktion iconv() die Fähigkeit zur Transliteration. Das bedeutet, dass ein Zeichen welches im Ziel-Zeichensatz nicht zur Verfügung steht, durch ähnliche Zeichen ersetzt wird. Durch Anhängen von „//TRANSLIT“ an den Zielzeichensatz bringt man die Funktion dazu, die speziellen Zeichen nicht zu verwerfen, sondern umzuwandeln:

<?php
$satz = "Olé Garçon! Diese Süßspeise schmeckt gar nicht übel! *börp*";
print (iconv("UTF-8", "ASCII//TRANSLIT", $satz));
?>

Das ergibt diese Zeichenfolge (wohlgemerkt wenn die PHP-Datei in UTF-8 kodiert ist):
Ole Garcon! Diese Suessspeise schmeckt gar nicht uebel! *boerp*

Na bitte!

iconv()-Dokumentation