如何用DOMDocument删除元素?
是否有可能从加载的DOM
删除元素而不创build一个新的? 比如像这样的东西:
$dom = new DOMDocument('1.0', 'utf-8'); $dom->loadHTML($html); foreach($dom->getElementsByTagName('a') as $href) if($href->nodeValue == 'First') //delete
通过告诉父节点删除该子节点来删除该节点:
$href->parentNode->removeChild($href);
请参阅DOMNode::$parentNode
Docs和DOMNode::removeChild()
Docs 。
另见:
- 如何使用PHP DOMDocument去除属性?
- 如何使用DOMDocument类去除HTML元素
容易:
$href->parentNode->removeChild($href);
这花了我一段时间才弄清楚,所以这里有一些澄清:
如果你从循环中删除元素(如在OP的例子中), 你需要向后循环
$elements = $completePage->getElementsByTagName('a'); for ($i = $elements->length; --$i >= 0; ) { $href = $elements->item($i); $href->parentNode->removeChild($href); }
DOMNodeList文档 :如果向后迭代,则可以修改,甚至删除DOMNodeList中的节点