Cheatah: htmlentities() verwendet nicht get_html_translation_table()

Beitrag lesen

Hi,

folgende Situation:

  • Ein XML (<?xml version="1.0" encoding="UTF-8"?>) enthält <description>... "You&#x2019; re Beautiful" ...</description>.

  • Dieses lese ich wie folgt aus:
      $xml = simplexml_load_string(...);
      $foo = $item->xpath('//description/text()')[0]; // Code leicht verkürzt

  • Es enthält nunmehr den Text '... "You’ re Beautiful" ...', was (soweit ich es überblicke) korrekt UTF-8-dekodiert ist.

  • Dies gebe ich aus mit:
      print htmlentities($foo, null, 'UTF-8');

  • Ergebnis: '... "You&rsquo; re Beautiful" ...'.

So weit, so gut. Da ich aber wieder XML ausgeben muss, ersetze ich alle HTML-Entities durch ihre nummerischen Gegenstücke, indem ich get_html_translation_table(HTML_ENTITIES) umkehre und in str_replace() jage. Nach meinem Dafürhalten sollte dies idiotensicher sein, da laut Doku eben dies von htmlentities() verwendet wird.

Lasse ich mir var_dump(get_html_translation_table(HTML_ENTITIES)) ausgeben, sehe ich aber nirgendwo "&rsquo;", so dass dies auch nicht in meiner Funktion rückübersetzt wird. Dieses Problem konnte ich zwar mit dem zweiten User-Kommentar lösen; aber es bleibt ein ungutes Gefühl: Wenn htmlentities() plötzlich Entities aus der hohlen Hand zaubert, mit welchen muss ich dann rechnen?

Daher meine Fragen: Habe ich irgendwo einen Denk- oder sonstigen Fehler? Zeigt sich mal wieder mein mangelhaftes Wissen um die Zeichensätze? Kann ich codemäßig das Problem beheben, ohne Massen von Entities angeben zu müssen?

Cheatah

--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes