PHP 5.4.36 Released

DOMElement::removeAttributeNode

(PHP 5)

DOMElement::removeAttributeNodeEfface un attribut

Description

public bool DOMElement::removeAttributeNode ( DOMAttr $oldnode )

Efface l'attribut oldnode de l'élément.

Liste de paramètres

oldnode

Le noeud de l'attribut.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Erreurs / Exceptions

DOM_NO_MODIFICATION_ALLOWED_ERR

Lancé si le noeud est en lecture seule.

DOM_NOT_FOUND_ERROR

Lancé si oldnode n'est pas un attribut de l'élément.

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
0
xr07354 at gmx dot de
1 year ago
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.
To Top