一组有用的类和实用工具,用于将HTML转换为AMP HTML(见 https://www.ampproject.org/)

v1.0.0 2024-04-04 11:17 UTC

This package is auto-updated.

Last update: 2024-09-04 12:13:16 UTC


README

Build Status

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 viewportmeta 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 等效元素
    • 将 `` 标签转换为 `` 标签
    • 将 `