新しい要素を作成せずに、ロードされたDOM
から要素を削除することは可能ですか?たとえば、次のようなものです:
$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
_を参照ドキュメント および DOMNode::removeChild()
ドキュメント 。
また見なさい:
これを理解するのにしばらく時間がかかったので、ここにいくつかの説明があります:
ループ内から要素を削除する場合(OPの例のように)、後方にループする必要があります
$elements = $completePage->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0; ) {
$href = $elements->item($i);
$href->parentNode->removeChild($href);
}
DOMNodeList documentation :逆方向に反復する場合、DOMNodeListからノードを変更したり、削除することもできます
簡単に:
$href->parentNode->removeChild($href);