【问题标题】:Redundant tags to be removed [duplicate]要删除的冗余标签[重复]
【发布时间】: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,而这段代码让我无法理解!

标签: php html tags


【解决方案1】:
function clean($txt)
{
    $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $txt);
    $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $txt);
    return $txt;
}

H9kDroid 在How to remove redundant <br /> tags from HTML code using PHP? 中回答

【讨论】:

  • 使用正则表达式可能会更慢。我将把这段代码应用到数百个 HTML 文件中。我想使用 DOM 结构来删除恰好是超快的
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
相关资源
最近更新 更多