$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>"
此示例中的“strong”标签将在文本中进行转换。 实际上我需要在那里添加一个很大的HTML代码。而且它的格式不好,有些事情会在以后解决。
我该怎么做?
答案 0 :(得分:1)
为了添加XML的新部分,您需要以某种方式创建DOM节点,而不是使用直接文本。
您可以尝试使用DOMDocument Fragment:http://www.php.net/manual/en/domdocumentfragment.appendxml.php
或者,正如它在该页面上所建议的那样,创建一个额外的DOMDocument对象并循环遍历节点以将它们添加到原始DOMDocument中。
答案 1 :(得分:1)
只需使用createCDATASection函数:$found->appendChild($dom->createCDATASection ( ' <strong>FIRST</strong> '.$found->nodeValue ));
答案 2 :(得分:1)
从这个类似的问题:How to insert HTML to 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>');
答案 3 :(得分:0)
$first = new DOMElement('strong', 'first');
$path = new DOMXPath($dom);
foreach($path->query('body') as $found)
{
$found->insertBefore($first);
}