Search code examples
phphtmltidy

Php Tidy : remove link and style tags inside body


I must cleanup some HTML code to remove <style> and <link> tags inside the <body> tag. I'm already using PHP Tidy to do some cleanup but I did not found how to remove those tags with PHP Tidy.

Do you have a solution ? Or maybe another markup cleaner PHP class...


Solution

  • Don't know how to do that with Tidy, but you can use DOM

    $dom = new DOMDocument;                    // init new DOMDocument
    $dom->loadHTML($html);                     // load HTML into it
    $xpath = new DOMXPath($dom);               // create a new XPath
    $nodes = $xpath->query('//body/style');    // Find all style elements in body tag
    foreach($nodes as $node) {                 // Iterate over found elements
        $node->parentNode->removeChild($node); // Remove complete style node
    }
    echo $dom->saveHTML();                     // output cleaned HTML
    

    For the <link> elements, adjust the Xpath to //body/link.