基本:我使用的是来自 Ubuntu 13.04 仓库的 PHP 5.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_dump 告诉我尝试删除它们,在这个循环结束后所有属性仍然存在。
我通过反向迭代属性列表解决了这个问题
<?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 不返回布尔值,而是返回 DOMAttr 对象。