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

2.1.0 2023-11-01 16:42 UTC

README

Build Status

AMP PHP库

一个开源的PHP库和命令行工具,用于将HTML转换为AMP HTML,并报告HTML是否符合AMP HTML规范。

什么是AMP PHP库?

AMP PHP库是一个开源的纯PHP库,

  • 与整个HTML文档(或字符串)或部分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>标签的JavaScript <script>标签
      • 模板CSS
    • 如果一个标签有互斥的属性,则删除除了一个以外的所有属性
    • 修复具有问题(如不一致的单位、无效的属性、缺少强制性属性、无效的隐式或指定布局)的amp-img标签的问题。
    • 注意:
      • 库在删除不良内容方面做得相当不错,并在少数情况下对HTML进行了一些修正/添加。由于库无法理解用户的真实意图,许多HTML验证问题最终可能需要人工手动修复。
      • 通常情况下,库会尝试修正中的验证错误,如果无法修正,则会从中移除这些标签。在内,AMP PHP库较为保守,在大多数情况下,如果标签在尝试修正后仍然无法验证,则不会从文档中移除该标签。
      • 库需要提供格式良好的HTML/HTML5。请不要提供有错误的HTML(例如未闭合的
        标签等)。它所做的修正仅与AMP HTML标准相关。如果您预计HTML可能不完整,请使用HTML整理库。
  • 自动将一些非AMP元素转换为它们的AMP等价元素
    • 标签被转换为标签