2
  $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;"

此示例中的“强”标签将转换为文本。实际上我需要在那里添加一个大的 HTML 代码。而且它的格式不是很好,以后会修复一些东西。

我怎样才能做到这一点?

4

4 回答 4

1

为了添加 XML 的新部分,您需要以某种方式从它们中创建 DOM 节点,而不是使用纯文本。

您可以尝试使用 DOMDocument 片段:http ://www.php.net/manual/en/domdocumentfragment.appendxml.php

或者,正如它在该页面上所建议的那样,创建一个额外的 DOMDocument 对象并遍历节点以将它们添加到您的原始 DOMDocument 中。

于 2011-09-07T16:01:18.400 回答
1

只需使用 createCDATASection 函数:$found->appendChild($dom->createCDATASection ( ' <strong>FIRST</strong> '.$found->nodeValue ));

于 2014-11-22T21:02:20.957 回答
1

从这个类似的问题:如何将 HTML 插入 PHP DOMNode?

1)创建一个辅助函数:

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)使用助手将原始html插入元素:

$elem = $domDocument->createElement('div');
appendHTML($elem, '<h1>Hello world</h1>');
于 2015-09-21T10:32:05.910 回答
0
$first = new DOMElement('strong', 'first');
$path  = new DOMXPath($dom);

foreach($path->query('body') as $found)
{
  $found->insertBefore($first);
}
于 2011-09-07T16:05:19.663 回答