domdocument-xml und "Ü" und encoding und save
frankx
- php
0 Ashura
Hellihello
<?php
$xmlString='<?xml version="1.0" encoding="ISO-8859-1"?>
<body>
<h1>1. Überschrift
</h1>
<p>Absatz
</p>
</body>';
$xml = new DOMDocument;
$xml->loadXML($xmlString);
$neuesElement="h1";
$neuerInhalt="Überschrift"; //Zeile 19
$neueUeberschrift = $xml->createElement($neuesElement,$neuerInhalt);
$body=$xml->getElementsByTagName("body")->item(0);
$body->appendChild($neueUeberschrift);
echo $xml->saveXML();
?>
bringt den Fehler:
Warning: output conversion failed due to conv error in D:\xampp\htdocs\testsumsprogrammierenmedion\xhtml\save_xml_htmlentities.php on line 19
Warning: Bytes: 0xDC 0x62 0x65 0x72 in D:\xampp\htdocs\testsumsprogrammierenmedion\xhtml\save_xml_htmlentities.php on line 19
Wenn ich das "Ü" ersetzte durch "U" ist alles o.k. Wenn ich htmlentities("Überschrift") nehme, wird daraus in der Ausgabe: "&Uuml;", weil PHP mit DOMDocument-saveXML() scheinbar die HTML-Entities nochmal konveriert. Mit CDATA würde es gehen, mein Plan war aber, direkt in ein XHTML-Dokument einzugreifen. Auch wundert mich, dass das Ü aus dem XML-String klagklos übernommen wird, und das aus der Eingabe nicht. DOMDocument->createTextNode() und das dann an das h1-Element appended bringt den selben Fehler. (Der Scite-Editor 8-Bit Kodierung eingestellt und zeigt as Ü richtig an. Stelle ich alles auf utf-8, wirds korrekt angezeigt). Weiß jemand Rat?
Dank und Gruß,
frankx
Hallo frankx.
Warning: output conversion failed due to conv error in D:\xampp\htdocs\testsumsprogrammierenmedion\xhtml\save_xml_htmlentities.php on line 19
Das dürfte ein Bug in PHP sein. Mit meiner lokalen Version (5.1.4) kann ich das Problem nicht nachvollziehen.
Einen schönen Samstag noch.
Gruß, Ashura