有什么方法可以将HTML模板插入到现有DOMNode中,而无需对内容进行编码?
我试图做到这一点:
$dom->createElement('div', '<h1>Hello world</h1>'); $dom->createTextNode('<h1>Hello world</h1>');
输出几乎相同,唯一的区别是第一个代码会将其包装在div中。我试图从字符串加载HTML,但是我不知道如何将其主体内容附加到另一个DOMDocument中。
在javascript中,此过程似乎非常简单明显。
它与另一个DOMDocument一起用于解析HTML代码。但是您需要先将节点导入主文档,然后才能在其中使用它们:
$newDiv = $dom->createElement('div'); $tmpDoc = new DOMDocument(); $tmpDoc->loadHTML($str); foreach ($tmpDoc->getElementsByTagName('body')->item(0)->childNodes as $node) { $node = $dom->importNode($node, true); $newDiv->appendChild($node); }
并作为方便的功能:
function appendHTML(DOMNode $parent, $source) { $tmpDoc = new DOMDocument(); $tmpDoc->loadHTML($source); foreach ($tmpDoc->getElementsByTagName('body')->item(0)->childNodes as $node) { $node = $parent->ownerDocument->importNode($node, true); $parent->appendChild($node); } }
然后,您可以简单地执行以下操作:
$elem = $dom->createElement('div'); appendHTML($elem, '<h1>Hello world</h1>');