0

重複の可能性:
余分な/冗長な書式タグを削除して 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 コードを投稿できません) 半分を削除しているだけです..スパン タグが 2 つ存在するようで、1 つだけを削除し、同じことがすべての空のタグに適用されます

このコードを何百もの HTML ファイルに使用するため、たまたま非常に高速な DOM 構造を使用しています。そのため、回答の一部は役に立たない正規表現を使用しています。

4

1 に答える 1

0
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;
}

PHP を使用して HTML コードから冗長な <br /> タグを削除する方法の H9kDroid による回答

于 2012-05-22T15:30:38.997 に答える