2012-04-23 15 views
4

にDOMNodeをからすべての属性を削除します。ノードが2つの属性を持つだから、これは動作しませんforeachループ

 foreach ($element->attributes as $attribute) { 
      $element->removeAttribute($attribute->name); 
     } 

場合、それは最初のものだけを削除します。

ノー成功を収めてDOMNAMEDNODEMAPのクローンを作成しようとした:

 $attributesCopy = clone $element->attributes; 
     foreach ($attributesCopy as $attribute) { 
      $element->removeAttribute($attribute->name); 
     } 

はまだ最初の属性を削除します。

この問題については、ここで説明します。http://php.net/manual/en/class.domnamednodemap.php 明らかに、機能でありバグではありません。しかし、コメントに記載されている解決策はありません。単に

+0

$ attribute-> nameをエコーし​​て、変更しているかどうかを確認してください。 – doNotCheckMyBlog

+0

作業中のDOMツリーを教えてください。 –

答えて

7

$attributes = $element->attributes; 
while ($attributes->length) { 
    $element->removeAttribute($attributes->item(0)->name); 
} 

属性のコレクションが自動的にすぐに属性が除去されると、再度インデックスを付けているので、ただ何も残っていないまで属性にゼロを取り除くに保ちます。

関連する問題