$dom= new DOMDocument('1.0', 'iso-8859-1');
$dom->loadHTML(' <html><body> <strong>SECOND</strong> </body></html>');
$path = new DOMXPath($dom);
foreach($path->query('body') as $found){
$found->nodeValue = ' <strong>FIRST</strong> '.$found->nodeValue;
}
var_dump($dom->saveHTML()); //It shows <strong> as "<strong>"
The "strong" tags in this example will be transformed in text. Actually I need to add a big HTML code there. And its not well formated, somethings will be fixed later.
How can I do this?
From this similar question: How to insert HTML to PHP DOMNode?
1) Create an helper function:
private static function __appendHTML($parent, $rawHtml) {
$tmpDoc = new DOMDocument();
$tmpDoc->loadHTML($rawHtml);
foreach ($tmpDoc->getElementsByTagName('body')->item(0)->childNodes as $node) {
$importedNode = $parent->ownerDocument->importNode($node, TRUE);
$parent->appendChild($importedNode);
}
}
2) Use the helper to insert raw html into an element:
$elem = $domDocument->createElement('div');
appendHTML($elem, '<h1>Hello world</h1>');
In order to add new parts of the XML, you'll need to create DOM nodes out of them somehow instead of using straight text.
You might try using DOMDocument Fragment: http://www.php.net/manual/en/domdocumentfragment.appendxml.php
Or, as it suggests on that page, create an additional DOMDocument object and loop through the nodes to add them to your original DOMDocument.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With