Leeloo5E: + PHP: kleiner < und größer >

Beitrag lesen

Hallo,

echo $begrüßung;

Fangen wir von vorne an: Ich baue mir mit Hilfe von DOMImplementation von PHP ein XML-Dokument in UTF-8. Damit auch jeder Inhalt der erstellten XML-Tags akzeptiert werden, muss ich sie maskieren, mittels htmlentites (sorry, ein anderer Weg ist mir grad nicht eingefallen).

Nein, das ist nicht notwendig, da die notwendigen Maskierungen von den DOM-Funktionen selbst vorgenommen werden. Du übergibst einfach nur reinen Text in dem dafür vorgesehenen Parameter.
htmlentities() ist auch die falsche Funktion, da XML nur für die 5 Zeichen & < > " ' Entities deklariert. Aber egal, ob du nun htmlentities() oder htmlspecialchars() verwendest, wird das Ergebnis von den DOM-Funktionen als reiner Text interpretiert und das einleitende & erneut maskiert.

Zu Maskierung verwende ich jetzt htmlspecialchars($cont, ENT_QUOTES, "UTF-8");

Ich hätte es gern weggelassen, wenn es beim hinzufügen des Strings zum DOM-Baum nicht immer Fehler gegeben hätte. Ich muss es maskieren, sonst gehts net.

Das heißt also, du möchtest diese Eingabe nicht als reinen Text betrachten sondern als XML-Fragment? Dann musst du das auch so bekanntgeben und DOMDocumentFragment->appendXML() benutzen.

Danke für den Tipp. Hantiere gerade damit rum. Um das Fragment dem Baum hinzufügen zu können, muss er ebenfalls utf8-kodiert werden. Also so:

  
 $f = $dom->createDocumentFragment();  
 $f->appendXML(utf8_encode($cont));  
 $dom->documentElement->appendChild($f);  

Der Endstring, der nach Verwendung von $dom->saveXML(); entsteht, muss ebenfalls mit utf8_encode($xmlstring); codiert werden, sonst is nix mit neu laden als DOMXML, weil er dann rummeckert: "NOT PROPER UTF-8 ... bla ..."

Das macht er auch, wenn er oben bei appendXML($cont); kein utf8_encode bekommt.

Das htmlspecialchars($cont, ENT_QUOTES, "UTF-8"); an der selben Stelle führt auch nur zu Fehlermeldungen.

Das Problem ist jetzt, dass er jetzt dort wieder Probleme hat mit den > und <. Wenn die nicht vorkommen, stören Umlaute zwar nicht, die kommen aber nur als wirrer unentzifferbarer Buchstabensalat (die kann ich hier nichtmal als Beispiel angeben, weil "vom W3C als „discouraged character“ gekennzeichnet") an, was auch nicht Sinn und Zweck ist. Beides zusammen nutzt mir auch nix, weil dann nämlich die > und < maskiert werden und nicht mehr als XML in den Baum eingehängt werden können.

Gruß,
Leeloo

--
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra