soundasleep / html5lib-php
基于WHATWG HTML5规范的HTML解析器的PHP实现。
0.1.3
2014-04-18 00:52 UTC
Requires
- php: >=5.3.2
This package is auto-updated.
Last update: 2024-09-14 09:58:06 UTC
README
这是HTML5规范中标记化和树构建部分的PHP实现。该库的潜在用途可以在网络爬虫和HTML过滤器中找到。
警告:这是一个预alpha版本,因此代码中某些部分可能不够完善(例如错误报告和性能)。然而,代码非常接近规范,通过了与解析错误无关的所有测试。不过,预计您在下次升级时需要更新代码。
此分支结合了html5lib/html5lib-php和lavoiesl/php-html5lib的工作,并且可以通过composer通过Packagist使用
{ "require": { "soundasleep/html5lib-php": "~0.1.3" } }
使用说明
<?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
开发者注意
-
要设置单元测试,您需要添加一个包含 $simpletest_location = 'path/to/simpletest/'; 的小占位符文件 test-settings.php。这需要是SimpleTest的1.1版本(或者,直到它发布,SVN trunk)。
-
我们不希望最终使用PHP的DOM,因为它对HTML 5允许的某些类型错误不敏感(例如,元素"foo@bar")。但是,当前的实现使用了它,因为它很简单。最终,此html5lib实现将获得SimpleTree的版本;并且可能默认开始使用它。
-
原始实现在此处执行行和列跟踪。然而,发现这大约加倍了标记化的运行时间,因此我们决定采取更乐观的方法:仅在明确要求时计算行/列号。如果我们尝试为文档中的所有内容计算行/列号,这会更慢,但如果错误数量足够少,这将是一个巨大的改进。