DOMElement::removeAttributeNode
(PHP 5, PHP 7, PHP 8)
DOMElement::removeAttributeNode — 属性を削除する
パラメータ
attr
-
属性ノード。
エラー / 例外
DOM_NO_MODIFICATION_ALLOWED_ERR
-
ノードが読み込み専用の場合に発生します。
DOM_NOT_FOUND_ERR
-
attr
が要素の属性でない場合に発生します。
参考
- DOMElement::hasAttribute() - 属性が存在するかどうかを調べる
- DOMElement::getAttributeNode() - 属性ノードを返す
- DOMElement::setAttributeNode() - 新しい属性ノードを要素に追加する
+add a note
User Contributed Notes 1 note
xr07354 at gmx dot de ¶
11 years 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.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google