是否可以从加载中删除元素DOM
而不创建新元素?例如这样的事情:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
foreach($dom->getElementsByTagName('a') as $href)
if($href->nodeValue == 'First')
//delete
Run Code Online (Sandbox Code Playgroud)
hak*_*kre 88
通过告知父节点删除子节点来删除节点:
$href->parentNode->removeChild($href);
Run Code Online (Sandbox Code Playgroud)
查看DOMNode::$parentNode
文档和DOMNode::removeChild()
文档.
另见:
ale*_*ird 19
我花了一段时间才弄明白,所以这里有一些澄清:
如果要从循环中删除元素(如OP的示例中所示),则需要向后循环
$elements = $completePage->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0; ) {
$href = $elements->item($i);
$href->parentNode->removeChild($href);
}
Run Code Online (Sandbox Code Playgroud)
DOMNodeList文档:如果向后迭代,您可以修改甚至删除DOMNodeList中的节点