當你在 foreach 迴圈中迭代 DOMNodeList 時,你不能從中移除 DOMNode。例如...
<?php
$domNodeList = $domDocument->getElementsByTagname('p');
foreach ( $domNodeList as $domElement ) {
// ...對 $domElement 執行操作...
$domElement->parentNode->removeChild($domElement);
}
?>
... 會看起來讓 foreach 上的內部迭代器混亂,結果會很奇怪。不過,製作要移除的項目佇列似乎有效。例如...
<?php
$domNodeList = $domDocument->getElementsByTagname('p');
$domElemsToRemove = array();
foreach ( $domNodeList as $domElement ) {
// ...對 $domElement 執行操作...
$domElemsToRemove[] = $domElement;
}
foreach( $domElemsToRemove as $domElement ){
$domElement->parentNode->removeChild($domElement);
}
?>