electrolinux/php-html5lib

A PHP实现的基于WHATWG HTML5规范的HTML解析器。

0.1.0 2013-03-18 18:32 UTC

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的版本;并且可能默认开始使用它。

  • 原始实现在此处进行了行和列跟踪。但是,发现这大约加倍了标记化的运行时间,因此我们决定采取更乐观的方法:仅在明确请求时计算行/列号。如果我们尝试为文档中的所有内容计算行/列号,这将更慢,但如果错误数量足够少,这将是一个巨大的改进。