可能重复:
通过删除多余/冗余的格式标记来清理 HTML
我一直在尝试删除从 HTML 作曲家生成的冗余标签。这显然无法删除所有空的。我一直在看它一段时间,我无法弄清楚。可能有一些我想念的东西。
下面是代码。非常感谢大家。。
//Check for reduntant tags
function removeRedundantTags($pathname) {
$dom = new DOMDocument();
$dom->loadHTMLFile($pathname);
$allTags = $dom->getElementsByTagName('*');
for($i = 0; $i < $allTags->length; $i++) {
$currentTag = $allTags->item($i);
echo "Accessed Tags: ".$currentTag->nodeName.'<br>';
if($currentTag->hasChildNodes()) continue;
if($currentTag->nodeName == 'br' || $currentTag->nodeName == 'img' || $currentTag->nodeName == 'meta') continue;
if($currentTag->nodeValue == NULL) {
$parentNode = $currentTag->parentNode;
$oldChild = $parentNode->removeChild($currentTag);
echo "Removed Tags----: ".$oldChild->nodeName.'<br>';
}
}
echo "Redandant Removed<br>";
$dom->saveHTMLFile($pathname);
}
编辑(添加输出)假设我正在尝试清理跨度标签(对不起,我无法发布 HTML 代码)它只是删除了它的一半。就像存在两个跨度标签它只删除一个,并且这同样适用于所有空标签
我正在使用 DOM 结构,它恰好非常快,因为我将使用这段代码处理数百个 HTML 文件。所以有些答案使用了无用的正则表达式。