Вы перебираете массив и одновременно удаляете его.
К сожалению, это означает, что каждый раз, когда вы удаляете дочерний элемент внутри цикла, следующая итерация цикла пропускает узел.foreach
недостаточно «умен» в сочетании с DOMDocument
, чтобы сделать это разумно.
Вместо foreach
используйте индексы:
$meta = $html->getElementsByTagName("meta");
for ($i = $meta->length - 1; $i >= 0; $i--) { // `foreach` breaks the `removeChild`
$child = $meta->item($i);
$child->parentNode->removeChild($child);
}