HTML-Entities mit PHP zu XML-Entities wandeln

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)?