基本:我使用来自 Ubuntu 13.04 存储库的 PHP5.4.9。我的代码的目标是递归地迭代 HTML 源代码(作为 DomDocument)并清理所有在 Epub 文件中使用无效的内容(例如,属性 align 在 Epub 中对段落无效)。
首先:今天我尝试使用这段简单的代码从 DOMElement 中移除属性
<?php
for ( $k=0; $k < $element->attributes->length; $k++) {
if( ){
var_dump( $element->attributes->item($k)->nodeName);
$element->removeAttributeNode( $element->attributes->item($k));
}
}
?>
不幸的是,即使这些 var_dumps 告诉我尝试删除了这些属性,当这个循环结束后,所有属性仍然存在。
我通过反向迭代属性列表解决了这个问题
<?php
for ( $k = $element->attributes->length - 1; $k >= 0; --$k) {
if( ){
var_dump( $element->attributes->item($k)->nodeName);
$element->removeAttributeNode( $element->attributes->item($k));
}
}
?>
其次:DOMElement::removeAttributeNode 不会返回 bool 类型,而是返回 DOMAttr 对象。