HTML-Entities mit PHP zu XML-Entities wandeln
22. April 2006
Hallo liebe PHP-Freunde da draußen! Es muss doch eine Möglichkeit geben, einen Text mit lauter sprechenden HTML-Entities in einen XML-kompatiblen Text umzuwandeln, der nur noch numerische Unicode-Entities enthält. Etwa so:
Ich gähnte und schoß dabei über das Ziel hinaus und kaufte mir für € 500,– einen Hammer.
muss so aussehen:
Ich g& #x00E4;hnte und scho& #x00DF;
dabei & #x00FC;ber das Ziel hinaus und kaufte mir
f& #x00FC;r & #x20AC; 500,& #x2013; einen Hammer.
(Natürlich ohne die Leerzeichen, die sind wegen Textile)
Hintergrund: Der Feed von Loudblog muss nun endlich UTF-8 werden und korrektes XML obendrein. Da jedoch aus bestimmten Gründen die Inhalte in der Datenbank größtenteils mit HTML-Entities gespeichert sind, muss man das umwandeln, da XML lediglich normale, unmaskierte Unicode-Zeichen versteht, oder aber hexadezimale Entities.
Folgendes hat nicht geklappt:
- Die Funktion html_entitiy_decode ist Schrott, zumindest in PHP 4.
- Wilde RegEx-Erkennungsspielchen und -umrechnereien haben auch nicht geklappt.
Gibt es eine saubere Lösung für PHP 4 (Gerne auch als externe Funktion/Klasse)?