所以这不起作用:
foreach ($element->attributes as $attribute) {
$element->removeAttribute($attribute->name);
}
如果节点有2个属性,则只删除第一个属性。
我尝试克隆DOMNamedNodeMap但没有成功:
$attributesCopy = clone $element->attributes;
foreach ($attributesCopy as $attribute) {
$element->removeAttribute($attribute->name);
}
仍然只删除第一个属性。
此问题在此解释:http://php.net/manual/en/class.domnamednodemap.php 显然它是一个功能,而不是一个bug。但是评论中没有提到解决方案。
答案 0 :(得分:9)
简单地:
$attributes = $element->attributes;
while ($attributes->length) {
$element->removeAttribute($attributes->item(0)->name);
}
由于属性集合会在删除属性后自动重新索引,因此请继续删除属性零,直到没有遗留属性为止。