PHP: Euro-Zeichen von ISO-8859-1 umwandeln.

Nicht nur die Griechen haben Probleme mit dem Euro. Ich bin schon häufig darüber gestolpert und diesmal hab ich mir die Zeit genommen es endlich schön zu lösen.

Folgendes Problem: Ich bekomme einen Text von einer Webseite geliefert. Die Auslieferung erfolgt in ISO-8859-1 und im Text sind Euro-Zeichen enthalten. Das klappt auch, weil der Browser einfach wieder gibt was man ihm vorwirft. Ich möchte diesen Text jetzt aber in einer Datenbank speichern oder anderweitig verarbeiten…
Geht nicht!! Der Zeichensatz ISO-8859-1 kennt das Euro-Zeichen „€“ nicht. Somit arbeitet weder die Datenbank korrekt, noch geben mir Standard-PHP-Funktionen wie utf8_encode() das richtige Ergebnis.

Die Lösung liegt im Hex-Wert des Euro-Zeichens (80). Und das schnapp ich mir, bevor ich irgend was anderes mache:

// $text enthält den ISO-8859-1-String mit Euro-Zeichen
$euroText = preg_replace(‚/\x80/‘, ‚€‘, $text);

et voilla… ich habe schöne Euro-Zeichen im Text und kann nun fröhlich utf8_encoden oder what ever.

Schreibe einen Kommentar