Search code examples
phpdomdomdocumentdomxpathnodevalue

Php - Dom, Insert HTML_CODE inside nodeValue


  $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 "&lt;strong&gt;"

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?


Solution

  • 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.