html_entity_decode() und Sonderzeichen wie –

html_entity_decode hat Probleme mit Sonderzeichen wie zum Beispiel: – Das hängt irgendwie mit dem Zeichensatz zusammen. Das Problem kann wie folgt umgangen werden:

Mit ist jedoch noch nicht ganz klar, warum das schlussendlich funktioniert, aber anscheinend funktioniert ist. Warum überhaupt diese Mühe? -> Will man das ganze als SimpleXML Objekt laden, dann dürfen entsprechende Sonderzeichen nicht drini sein. SimpleXML funktioniert meines Wissens und meiner Erfahrung nach lediglich mit UTF-8. Und aus irgend einem Grund hatte ich auch Probleme mit den HTML Entities.

  • http://www.sanid.com Marc Schroetel

    Der Post ist zwar ziemlich alt, wird aber doch in Google recht weit oben angezeigt, daher die Antwort:

    PHP arbeitet intern standardmäßig mit dem Zeichensatz ISO-8859-1. Daher kann html_entity_decode() nur jene Entities umwandeln, die ein entsprechendes Zeichen im gewählten Zeichensatz besitzen. ‘ndash’ existiert aber nicht in ISO-8859-1, daher klappt es nur mit Unicode (UTF-x) oder anderen Zeichensätzen, die den verlängerten Dash enthalten.

    Lösungen:
    - UTF-8 verwenden (ist sowieso zeitgemäßer)
    - Die entsprechenden Entities rausparsen und ersetzen (ndash durch – etc)

    Lieben Gruß
    Marc