open20/amp

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

1.1.7 2023-02-16 19:11 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> 标签
      • 模板 CSS
    • 如果某个标签具有互斥的属性,则移除除一个之外的所有属性
    • 修复具有诸如单位不一致、无效属性、缺少必需属性、无效的隐式或指定布局等问题的问题的 amp-img 标签。
    • 注意:
      • 该库在移除不良内容方面做得相当不错,并在少数情况下对 HTML 进行了一些修正/添加。由于库无法理解用户的真实 意图,许多 HTML 验证问题最终可能需要由人工手动修复。
      • 一般来说,库会尝试修正<head>中的验证错误,如果修正失败,则会移除这些标签。
      • 库需要提供格式良好的HTML/HTML5。请勿提供有错误的、不正确的HTML(例如未关闭的<div>标签等)。所做的修正仅与AMP HTML标准问题相关。如果预期HTML可能格式不正确,请使用HTML整理库。
  • 自动将一些非AMP元素转换为它们的AMP等效元素
    • <img>标签转换为<amp-img>标签
    • <iframe>标签转换为<amp-iframe>标签
    • <audio>标签转换为<amp-audio>标签
    • <video>标签转换为<amp-video>标签
    • 推文嵌入代码转换为<amp-twitter>标签。
    • Instagram嵌入代码转换为<amp-instagram>标签。
    • 视频嵌入代码转换为<amp-youtube>标签
    • 视频嵌入代码转换为<amp-dailymotion>标签
    • Pins嵌入代码转换为<amp-pinterest>标签
    • 音频音乐嵌入代码转换为<amp-soundcloud>标签
    • 视频嵌入代码转换为<amp-vimeo>标签
    • 视频嵌入代码转换为<amp-vine>标签
    • Facebook的