2010-06-16 76 views
1

我必须清理一些HTML代码以删除<body>标记中的<style><link>标记。 我已经使用PHP Tidy做一些清理,但我没有找到如何使用PHP Tidy去除这些标签。Php Tidy:删除身体内部的链接和样式标记

您有解决方案吗?或者,也许另一种标记清洁PHP类...

回答

2

不知道怎么做,与整洁,但你可以使用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

+0

不错。我以前没有考虑过这个。 – CaseySoftware 2010-06-16 13:13:26

+0

谢谢。那就是诀窍。 – Franck 2010-06-16 14:29:00

0

整齐另一种方法是http://htmlpurifier.org/

HTML净化器是一个用PHP 符合标准的HTML 过滤库。它还将确保您的文档符合标准 ,只有通过W3C的全面知识才能实现这些内容.HTML Purifier不仅可以删除所有恶意的 代码(更好的称为XSS),而且还可以确保您的文档符合标准,只能通过 获得全面的知识。规格。


提出这一额外的答案,因为它是如此完全无关的DOM的解决方案。

+0

确实,我会看看HTML Purifier,它似乎是一个更有效的解决方案。 – Franck 2010-06-16 14:29:47