是否有可能刪除加載DOM
元素,而無需創建一個新的?例如這樣的事情:如何用DOMDocument刪除元素?
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
foreach($dom->getElementsByTagName('a') as $href)
if($href->nodeValue == 'First')
//delete
是否有可能刪除加載DOM
元素,而無需創建一個新的?例如這樣的事情:如何用DOMDocument刪除元素?
$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。
看得那麼清楚:
輕鬆:
$href->parentNode->removeChild($href);
(複製)完全一樣,用戶hakre ... – 2013-09-10 17:39:16
@PeterKrauss我們回答在完全相同的時間,奇怪的是,我沒有得到任何upvotes =/ – silkfire 2013-09-11 07:47:44
是的,對不起(!)...現在我看到的時候。需要刪除我的評論? – 2013-09-11 19:20:12
這花了我一段時間來弄清楚,所以這裏的一些說明:
如果你在一個循環中刪除從元素(如OP的例子),你需要循環向後
$elements = $completePage->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0;) {
$href = $elements->item($i);
$href->parentNode->removeChild($href);
}
DOMNodeList documentation:您可以修改,甚至刪除節點從的DOMNodeList如果你迭代向後
的可能重複[PHP:無法刪除的DomDocument節點(http://stackoverflow.com/questions/3602207/php-cant-remove-node-from-domdocument) – hakre 2013-03-07 13:42:46