我必须清理一些 HTML 代码以删除标签内的<style>
标签。我已经在使用 PHP Tidy 进行一些清理,但我没有找到如何使用 PHP Tidy 删除这些标签。<link>
<body>
你有解决方案吗 ?或者也许是另一个标记清理器 PHP 类......
不知道如何用 Tidy 做到这一点,但你可以使用 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
对于<link>
元素,将 Xpath 调整为//body/link
.
Tidy 的替代方案是http://htmlpurifier.org/
HTML Purifier 是一个用 PHP 编写的符合标准的 HTML 过滤器库。HTML Purifier 不仅会使用经过全面审核、安全且允许的白名单删除所有恶意代码(更广为人知的 XSS),它还将确保您的文档符合标准,这只有通过全面了解 W3C 规范才能实现。
将此作为附加答案,因为它与 DOM 解决方案完全无关。