用于HTML的PHP​​ SAX解析器?

时间:2010-05-30 15:38:07

标签: php sax html-parsing

我需要PHP的HTML SAX(不是DOM!)解析器才能处理甚至无效的HTML代码。 我需要它的原因是过滤用户输入的HTML(删除所有属性和标签 除了允许的内容之外)并将HTML内容截断为指定的长度。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

SAX用于处理有效的XML并在无效标记上失败。处理无效的HTML标记需要保留比SAX解析器通常保留的状态更多的状态。

我不知道任何类似SAX的HTML解析器。最好的方法是使用HTML之前整理HTML,然后使用XML解析器,但这可能会破坏您首先使用SAX解析器的目的。

答案 1 :(得分:1)

尝试使用HTML SAX Parser

答案 2 :(得分:1)

总结为两个步骤:

  1. 使用 Tidy 将“免费HTML”转换为“优秀的XHTML”。
  2. 使用 XML Parser 通过 SAX API 将XHTML解析为XML。

  3. 首先使用Tidy(!)将“免费HTML”转换为XHTML(或者当您无法信任“假定的XHTML”时)。请参阅cleanRepair方法。它需要更多时间,但是如果太大,则运行大文件(!)... Set some minutes as maximum execution time

    另一个选项(用于处理大文件)是在检查或转换为XHTML后缓存XHTML文件。参见Tidy的repairfile方法。

    使用“受信任的XHTML”,使用SAX ...如何在PHP中使用SAX?

    使用SAX standard API解析XML,在PHP中由LibXML实现(参见 LibXML2 xmlsoft.org),其接口为{{3 },接近 SAX标准API

    另一种使用“ LibXML2 的SAX”的方法是使用另一个接口(一个PHP's XML Parser而不是传统的SAX接口),使用PHP iterator。请参阅XMLReader


    是的,PHP手册(!!)中没有表达“SAX”或“SAX API”这两个术语。请参阅this explanation about "XMLReader use SAX"

答案 3 :(得分:0)

我可以在这里建议梨包:http://pear.php.net/package/XML_HTMLSax/redirected