vanderlee / enricher
通过选择器在HTML中回填(仅当缺失时添加)、覆盖和删除类、样式规则和属性。
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-08-26 04:47:01 UTC
README
版本 1.0.2
版权 © 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);