DOMElement::removeAttributeNode

(PHP 5, PHP 7)

DOMElement::removeAttributeNodeУдаляет атрибут

Описание

public bool DOMElement::removeAttributeNode ( DOMAttr $oldnode )

Удаляет узел атрибута oldnode из элемента.

Список параметров

oldnode

Узел атрибута.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Ошибки

DOM_NO_MODIFICATION_ALLOWED_ERR

Возникает, если узел доступен только для чтения.

DOM_NOT_FOUND_ERROR

Возникает, если oldnode не является атрибутом элемента.

Смотрите также

Коментарии

Basic: I use PHP5.4.9 from Ubuntu 13.04 repository. The aim of my code is to iterate HTML source (as a DomDocument) recursively and cleanup everything that is not valid to be used inside Epub files (i.e. and attribute align is not valid for paragraphs in Epubs).

FIRST: Today I tried removing attributes from a DOMElement using this simple code:
<?php
for ( $k=0$k $element->attributes->length$k++) {
    if( 
/* some rule */ ){
       
var_dump$element->attributes->item($k)->nodeName);
       
$element->removeAttributeNode$element->attributes->item($k));
    }
}
?>
Unfortunately all attributes still existed when this loop was finished, even if these var_dumps told me that deleting them was tried.

I solved this problem iterating the attributes list backward:
<?php
for ( $k $element->attributes->length 1$k >= 0; --$k) {
    if( 
/* same rule */ ){
       
var_dump$element->attributes->item($k)->nodeName);
       
$element->removeAttributeNode$element->attributes->item($k));
    }
}
?>
SECOND: DOMElement::removeAttributeNode does NOT return a bool but a DOMAttr object.
2013-06-18 16:16:13
http://php5.kiev.ua/manual/ru/domelement.removeattributenode.html

    Поддержать сайт на родительском проекте КГБ