electrolinux / php-html5lib
A PHP实现的基于WHATWG HTML5规范的HTML解析器。
0.1.0
2013-03-18 18:32 UTC
Requires
- php: >=5.3.2
This package is auto-updated.
Last update: 2024-09-24 04:25:15 UTC
README
这是在PHP中实现HTML5规范的标记化和树构建部分的实现。此库的潜在用途可以在网络爬虫和HTML过滤器中找到。
警告:这是一个预_alpha版本,因此,代码的某些部分可能不够完善(例如错误报告和性能)。然而,代码与规范非常接近,并且通过了100%的非解析错误测试。不过,预计您在下次升级时需要更新您的代码。
使用说明
<?php use HTML5Lib\Parser; $dom = Parser::parse('<html><body>...'); $nodelist = Parser::parseFragment('<b>Boo</b><br>'); $nodelist = Parser::parseFragment('<td>Bar</td>', 'table'); ?>
文档
Parser::parse($text)
$text : HTML to parse
return : DOMDocument of parsed document
Parser::parseFragment($text, $context)
$text : HTML to parse
$context : String name of context element
return : DOMDocument of parsed document
开发者说明
-
要设置单元测试,您需要添加一个名为test-settings.php的小占位符文件,该文件包含$simpletest_location = 'path/to/simpletest/'; 这需要是SimpleTest的1.1版本(或者,在它发布之前,SVN主干)。
-
我们不希望最终使用PHP的DOM,因为它不能容忍HTML5允许的某些类型的错误(例如,元素"foo@bar")。但是,当前的实现使用了它,因为它很方便。最终,这个html5lib实现将获得SimpleTree的版本;并且可能默认开始使用它。
-
原始实现在此处进行了行和列跟踪。但是,发现这大约加倍了标记化的运行时间,因此我们决定采取更乐观的方法:仅在明确请求时计算行/列号。如果我们尝试为文档中的所有内容计算行/列号,这将更慢,但如果错误数量足够少,这将是一个巨大的改进。