【发布时间】:2012-05-29 03:03:27
【问题描述】:
可能重复:
Cleaning HTML by removing extra/redundant formatting tags
我一直在尝试删除从 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);
}
编辑(添加输出) 可以说我正在尝试清理 span 标签(抱歉,我无法发布 HTML 代码) 它只是删除了一半.. 就像存在两个跨度标签它只删除一个,这同样适用于所有空标签
我正在使用非常快的 DOM 结构,因为我将使用这段代码处理数百个 HTML 文件。所以有些答案使用了无用的正则表达式。
【问题讨论】:
-
htmlpurifier.org - 还应该帮助处理试图插入 XSS 攻击(或其他)的恶意用户。
-
如果您还发布一个示例输入、您期望的输出和您获得的输出,这可能会有所帮助。
-
我明白,我经历了这些,但我正在处理的代码是 PHP,而这段代码让我无法理解!