когда вы удаляете только внешний текст, вы удаляете само содержимое HTML, но если вы выполняете другую находку с теми же элементами, это будет отображаться в результате. причина в том, что простой объект HTML DOM по-прежнему имеет внутреннюю структуру элемента, только без его фактического содержимого. то, что вам нужно сделать для того, чтобы действительно удалить элемент, это просто перезагрузить HTML как строку в ту же переменную. таким образом, объект будет воссоздан без удаленного содержимого, а простой объект HTML DOM будет создан без него.
Вот пример функции:
public function removeNode($selector)
{
foreach ($this->find($selector) as $node)
{
$node->outertext = '';
}
$this->load($this->save());
}
поместите эту функцию в класс simple_html_dom, и все хорошо.