Подтвердить что ты не робот

Как удалить элемент HTML с помощью класса DOMDocument

Есть ли способ удалить элемент HTML с помощью класса DOMDocument?

4b9b3361

Ответ 1

http://us2.php.net/manual/en/domnode.removechild.php

DomDocument - это DomNode.. Вы можете просто вызвать remove child, и вы должны быть в порядке.

EDIT: Просто заметили, что вы, вероятно, говорили о странице, с которой работаете сейчас. Не знаю, будет ли работать DomDocument. Вы можете захотеть использовать javascript в этот момент (если он уже был доведен до клиента)

Ответ 2

В дополнение к ответу Дэйва Моргана вы можете использовать DOMNode::removeChild, чтобы удалить дочерний элемент из списка детей:

Удаление дочернего элемента по имени тега

//The following example will delete the table element of an HTML content.

$dom = new DOMDocument();

//avoid the whitespace after removing the node
$dom->preserveWhiteSpace = false;

//parse html dom elements
$dom->loadHTML($html_contents);

//get the table from dom
if($table = $dom->getElementsByTagName('table')->item(0)) {

   //remove the node by telling the parent node to remove the child
   $table->parentNode->removeChild($table);

   //save the new document
   echo $dom->saveHTML();

}

Удаление дочернего элемента по имени класса

//same beginning
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML($html_contents);

//use DomXPath to find the table element with your class name
$xpath = new DomXPath($dom);
$classname='MyTableName';
$xpath_results = $xpath->query("//table[contains(@class, '$classname')]");

//get the first table from XPath results
if($table = $xpath_results->item(0)){

    //remove the node the same way
    $table ->parentNode->removeChild($table);

    echo $dom->saveHTML();
}   

Ресурсы

http://us2.php.net/manual/en/domnode.removechild.php

Как удалить элемент с DOMDocument?

Как получить полный HTML-код из метода DOMXPath:: query()?