我需要PHP的HTML SAX(不是DOM!)解析器才能处理甚至无效的HTML代码。 我需要它的原因是过滤用户输入的HTML(删除所有属性和标签 除了允许的内容之外)并将HTML内容截断为指定的长度。
有什么想法吗?
答案 0 :(得分:4)
SAX用于处理有效的XML并在无效标记上失败。处理无效的HTML标记需要保留比SAX解析器通常保留的状态更多的状态。
我不知道任何类似SAX的HTML解析器。最好的方法是使用HTML之前整理HTML,然后使用XML解析器,但这可能会破坏您首先使用SAX解析器的目的。
答案 1 :(得分:1)
尝试使用HTML SAX Parser
答案 2 :(得分:1)
总结为两个步骤:
首先使用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)