乌克兰现在需要您的帮助!
2022 年 2 月 24 日,俄罗斯总统弗拉基米尔·普京下令俄罗斯武装部队入侵乌克兰。
迫切需要您的支持。
- 捐赠给志愿者。这是帮助乌克兰军队提供所有必要装备的志愿者基金:https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi- armiyi 或 https://savelife.in.ua/en/donate/
- 三重检查社交媒体来源。俄罗斯的虚假信息试图掩盖和歪曲乌克兰的现实。
- 帮助逃离俄罗斯袭击和炮击的乌克兰难民:https://www.globalcitizen.org/en/content/ways-to-help-ukraine-conflict/
- 向你们的政治代表施加压力,要求其向乌克兰提供帮助。
- 相信乌克兰人民,他们不会投降,他们没有另一个乌克兰。
谢谢你!
HTML5 是完全用 PHP 编写的符合标准的 HTML5 解析器和编写器。它很稳定并在许多生产网站中使用,下载量远远超过五百万次。
HTML5 提供以下功能。
使用 Composer 安装 HTML5-PHP。
通过将masterminds/html5
依赖项添加到您的composer.json
文件中:
{
"require" : {
"masterminds/html5" : " ^2.0 "
},
}
通过 Composer 可执行文件调用 require 命令:
composer require masterminds/html5
HTML5-PHP 具有高级 API 和低级 API。
以下是如何使用高级HTML5
库 API:
<?php
// Assuming you installed from Composer:
require " vendor/autoload.php " ;
use Masterminds HTML5 ;
// An example HTML document:
$ html = <<< 'HERE'
<html>
<head>
<title>TEST</title>
</head>
<body id='foo'>
<h1>Hello World</h1>
<p>This is a test of the HTML5 parser.</p>
</body>
</html>
HERE;
// Parse the document. $dom is a DOMDocument.
$ html5 = new HTML5 ();
$ dom = $ html5 -> loadHTML ( $ html );
// Render it as HTML5:
print $ html5 -> saveHTML ( $ dom );
// Or save it to a file:
$ html5 -> save ( $ dom , ' out.html ' );
解析器创建的$dom
是一个完整的DOMDocument
对象。 save()
和saveHTML()
方法将采用任何 DOMDocument。
加载 HTML5 文档时可以传入一组配置选项。
// An associative array of options
$ options = array (
' option_name ' => ' option_value ' ,
);
// Provide the options to the constructor
$ html5 = new HTML5 ( $ options );
$ dom = $ html5 -> loadHTML ( $ html );
支持以下选项:
encode_entities
(布尔值):指示序列化器应该积极地将字符编码为实体。如果没有这个,它只能编码最低限度的内容。disable_html_ns
(boolean):防止解析器自动将 HTML5 命名空间分配给 DOM 文档。这适用于非命名空间感知的 DOM 工具。target_document
(DOMDocument):将用作解析节点的目标的 DOM 文档。implicit_namespaces
(数组):解析器应使用的命名空间的关联数组。名称是标签前缀,值是 NS URI。 该库提供了以下低级 API,您可以使用它们来创建更多自定义的 HTML5 工具:
单元测试测试了 API 的每一个部分,并且每个公共函数都有详细的文档记录。
解析器的设计如下:
Scanner
代表解析器处理扫描。Tokenizer
从扫描器请求数据,对其进行解析、分类,然后将其发送到EventHandler
。它是一个递归下降解析器。EventHandler
接收标记化期间发生的每个特定语义事件的通知和数据。DOMBuilder
是一个EventHandler
,用于侦听标记化事件并基于事件构建文档树 ( DOMDocument
)。序列化程序采用数据结构( DOMDocument
)并将其转换为字符表示形式——HTML5 文档。
序列化器分为三个部分:
OutputRules
包含将 DOM 元素转换为字符串的规则。这些规则是接口RulesInterface
的实现,允许使用不同的规则集。Traverser
,这是一种特殊用途的树木步行者。它访问树中的每个节点并使用OutputRules
将节点转换为字符串。HTML5
管理Traverser
并将结果数据存储在正确的位置。序列化程序( save()
、 saveHTML()
)遵循 HTML 5.0 规范的第 8.9 节。因此标签根据以下规则进行序列化:
请检查问题队列以获取完整列表,但以下是目前不在路线图上的已知问题:
:
没有什么特殊意义。默认情况下,解析器不支持 XML 样式命名空间:
要启用 XML 命名空间,请参阅 XML 命名空间部分要使用 XML 样式命名空间,您必须配置好主要的HTML5
实例。
use Masterminds HTML5 ;
$ html = new HTML5 ( array (
" xmlNamespaces " => true
));
$ dom = $ html -> loadHTML ( ' <t:tag xmlns:t="http://www.example.com"/> ' );
$ dom -> documentElement -> namespaceURI ; // http://www.example.com
您还可以添加一些不需要命名空间声明的默认前缀,但其元素将被命名空间。
use Masterminds HTML5 ;
$ html = new HTML5 ( array (
" implicitNamespaces " => array (
" t " => " http://www.example.com "
)
));
$ dom = $ html -> loadHTML ( ' <t:tag/> ' );
$ dom -> documentElement -> namespaceURI ; // http://www.example.com
大大小小的补丁的专注(和耐心)贡献者已经使这个库变得更好。有关贡献者列表,请参阅 CREDITS 文件。
我们非常感谢 html5lib 的原作者。
虽然原始解析器的内容已所剩无几,但我们从阅读 html5lib 库中学到了很多东西。还有一些碎片留在这里。特别是,大部分 UTF-8 和 Unicode 处理都源自 html5lib 项目。
该软件是根据 MIT 许可证发布的。原始的 html5lib 库也是在 MIT 许可下发布的。
请参阅 LICENSE.txt
某些文件包含涉及 html5lib 的特定个人的版权声明。这些已在适当的情况下保留。