iteearmah / amp
一组有用的类和实用工具,用于将HTML转换为AMP HTML(见 https://www.ampproject.org/)
v1.0.0
2024-04-04 11:17 UTC
Requires
- php: >=5.6
- guzzlehttp/guzzle: ~6.1 || ^7.4.5 || ^7.8
- marc1706/fast-image-size: 1.*
- masterminds/html5: ^2.5
- querypath/querypath: ^3.0.4
- sabberworm/php-css-parser: ^8.0.0
- sebastian/diff: ^1.2 || ^2 || ^3 || ^4 || ^5
Requires (Dev)
- phpunit/phpunit: ^5.6.3 || ^6
- symfony/console: ^2.7.0
README
AMP PHP库
一个开源PHP库和命令行实用工具,可以将HTML转换为AMP HTML,并报告HTML与AMP HTML规范的一致性。
AMP PHP库是什么?
AMP PHP库是一个开源且纯PHP库,
- 可以与整个或部分HTML文档(或字符串)一起工作。具体来说,AMP PHP库
- 报告整个/部分HTML文档与AMP HTML规范的一致性。我们使用纯PHP实现了一个AMP HTML验证器,以报告任意HTML文档/HTML片段与AMP HTML标准的一致性。这个验证器是从JavaScript实现的规范验证器的子集。
- 具体来说,PHP验证器支持标签规范验证、属性规范验证、CDATA验证、CSS验证、布局验证、模板验证以及属性属性值对的验证。它将报告缺失的标签和属性、非法的标签和属性、根据规范是强制性的但未出现的标签和属性、根据规范是唯一的但多次出现的标签、具有错误父代或祖先或子代的标签等。
- 注意:虽然AMP PHP库(已经)支持许多规范验证器的功能和能力,但它并不旨在在每个方面与规范验证器达到一致性。即使在支持的特性中(例如CSS验证),也可能存在某些验证问题,我们没有标记但规范验证器会标记。
- 使用内部PHP验证器提供的反馈,AMP PHP库尝试“修正”HTML中发现的某些问题,使其更符合AMP HTML规范。例如,这包括
- 删除非法属性,例如在
<body>
标签内删除style
属性 - 删除所有类型的非法标签,例如在
<body>
标签内删除<script>
标签、具有不允许的祖先的标签、重复的唯一标签等。 - 删除非法属性值对,例如从
<meta name="viewport" content="width=device-width,minimum-scale=hello">
中删除minimum-scale=hello
- 添加或修正必要的标签,以使AMP文档具有最小有效性
- 例如,添加
<head>
、<body>
、meta viewport
、meta charset
、<style>
和<noscript>
标签 - 如果让库知道文档的规范路径,添加
link rel=canonical
标签 - 各种AMP组件和通用AMP JavaScript
<script>
标签的<script>
标签 - 样板CSS
- 例如,添加
- 如果有标签的互斥属性,删除除一个之外的所有属性
- 修复
amp-img
标签的问题,如单位不一致、无效属性、缺失强制性属性、无效的隐式或指定布局。 - 注意:
- 库在删除坏东西方面做得相当不错,并在少数情况下对HTML进行了一些修正/添加。由于库无法理解用户的真正意图,HTML中的许多验证问题最终可能需要由人工手动修复。
- 通常情况下,库会尝试修复 `` 中的验证错误,如果修复不成功,则会将这些标签从 `` 中移除。在 `` 中,AMP PHP 库的修复行为不那么激进,在大多数情况下,如果标签在尝试修复后仍然没有验证通过,库将不会从文档中移除该标签。
- 库需要提供格式良好的 HTML/HTML5。请不要提供有错误的 HTML(例如未关闭的 `` 标签等)。它所做的修正仅与 AMP HTML 标准问题相关。如果您预计您的 HTML 可能会格式不正确,请使用 HTML 整理库。
- 自动将一些非 AMP 元素转换为它们的 AMP 等效元素
- 将 `
` 标签转换为 `
` 标签 - 将 `
<audio>
标签转换为 `` 标签 <video>
标签转换为 `` 标签 - 推文嵌入代码 转换为 `
` 标签。 - Instagram 嵌入代码 转换为 `
` 标签。 - 视频嵌入代码 转换为 `
` 标签 - 视频嵌入代码 转换为 `
` 标签 - Pinterest 嵌入代码 转换为 `
` 标签 - 音频音乐嵌入代码 转换为 `
` 标签 - 视频嵌入代码 转换为 `
` 标签 - Facebook 的 `iframe` 和 `JavaScript SDK` 嵌入代码(用于帖子视频)转换为 `
` 标签 - 注意:
- 这些嵌入代码转换可能不具备您可能需要的先进功能。如果您需要增强现有功能或新的嵌入代码转换,请提交问题。
- 一些嵌入代码与一个 `
- 自动将一些非 AMP 元素转换为它们的 AMP 等效元素
- 删除非法属性,例如在