vanderlee/enricher

通过选择器在HTML中回填(仅当缺失时添加)、覆盖和删除类、样式规则和属性。

1.0.2 2016-10-24 19:04 UTC

This package is auto-updated.

Last update: 2024-08-26 04:47:01 UTC


README

版本 1.0.2

Build Status

版权 © 2016 Martijn van der Lee。适用MIT开源许可证。

简介

通过选择器在HTML中回填(仅当缺失时添加)、覆盖和删除类、样式规则和属性。

PHP的基本但快速的HTML属性和样式修改器。类似于Emogrifier,但仅支持基本选择器,并增加了属性支持。它的主要用途是更改HTML以用于电子邮件,但并不局限于这一特定用途。

功能

  • 更改样式、属性和类。
  • 一次添加(如果缺失)、覆盖和删除。
  • 根据标签名、类名、ID和/或属性的是否存在进行选择。
  • 一次运行多个选择器。
  • 快速。

与Emogrifier的比较

Enricher的功能和目的与Emogrifier(https://github.com/jjriv/emogrifier)有显著的重叠,但在一些关键方面有所不同。

  • 两者都有完整的单元测试。
  • 两者都支持元素选择器。例如 a
  • 两者都支持ID选择器。例如 #logo
  • 两者都支持类选择器。例如 table.mobile
  • 两者都支持属性选择器。例如 a[name]
  • 两者都支持组合选择器。例如 a[name].mobile
  • (+) Enricher比Emogrifier要快得多。可达几个数量级。
  • (+) Enricher支持添加和删除属性。
  • (+) Enricher支持添加和删除类。
  • (+) Enricher支持一次性添加、覆盖和删除。
  • (-) Emogrifier支持“路径”选择器。例如 #list a.item
  • (-) Emogrifier支持伪选择器。例如 :nth-child
  • (-) Emogrifier支持属性值选择器。例如 [name=anchor]
  • (/) Emogrifier需要有效的HTML,这可能会或可能不会是一个问题,具体取决于使用场景。

总的来说;如果你需要复杂的选择器,如路径,请使用Emogrifier。如果你需要更改类或属性或复杂的CSS重写,请使用Enricher。在其他情况下,Enricher将完成相同的工作,但更快。

未来计划

  • 支持*作为“所有元素”通配符。
  • 支持更复杂的选择器。

文档

在这里,你可以找到基本的入门指南。你可以在/doc目录中找到完整的PHPDoc。

安装

在此获取最新版本:https://github.com/vanderlee/Enricher

Enricher至少需要PHP 5.3或HHVM。

包含自动加载器(用于向前兼容性)或直接include Enricher.php文件或通过自己的自动加载器。

构造函数

构造函数不执行任何操作。

方法

reset()

清除所有选择器、属性、样式和类设置。

addSelector($selector)/addSelectors($selectors)

添加选择器以指定哪些元素可以被选中。

  • 通过指定标签选择元素。例如 div
  • 通过指定类进行选择。例如 div.blue
  • 通过指定ID进行选择。例如 div#body
  • 通过指定属性进行选择。例如 a[href]
  • 通过组合这些来形成选择器。例如 a[href][target].blue
  • 你可以通过逗号(,)分隔来指定多个选择器。

addAttribute($name, $value)/addAttributes($attributes)

overwriteAttribute($name, $value)/overwriteAttributes($attributes)

removeAttribute($name)/removeAttributes($names)

添加(如果缺失)、覆盖或删除属性。

addStyle($name, $value)/addStyles($styles)

overwriteStyle($name, $value)/overwriteStyles($styles)

removeStyle($name)/removeStyles($names)

添加(如果缺失)、覆盖或删除样式规则。

addClass($name)/addClasses($names)

removeClass($name)/removeClasses($names)

添加或删除类。

enrich($html)

根据设置丰富HTML。如果设置缺失,将返回一个空HTML。

示例

require_once 'Enricher.php';

$enricher = new Enricher();

$enricher->addSelector('a[href]');

$enricher->addStyle('color', 'black');
$enricher->addAttribute('title', 'I'm a hyperlink');

echo $enricher->enrich($html);