基本說明:我使用的是 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_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 物件。