wikimedia / css-sanitizer
用于解析和清理CSS的类
v5.3.0
2024-04-18 20:06 UTC
Requires
- php: >=7.4.0
- ext-iconv: *
- ext-mbstring: *
- wikimedia/scoped-callback: 3.0.0 || 4.0.0
- wikimedia/utfnormal: ^3.0.1 || ^4.0.0
Requires (Dev)
- mediawiki/mediawiki-codesniffer: 43.0.0
- mediawiki/mediawiki-phan-config: 0.14.0
- mediawiki/minus-x: 1.1.1
- php-parallel-lint/php-console-highlighter: 1.0.0
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpunit/phpunit: 9.6.16
- wikimedia/testing-access-wrapper: ~2.0.0
- wikimedia/update-history: ^1.0.1
README
Wikimedia CSS解析器 & 清理器
此库在PHP中实现了CSS分词器、解析器和语法匹配器。
用法
use Wikimedia\CSS\Parser\Parser; use Wikimedia\CSS\Sanitizer\StylesheetSanitizer; /** Parse a stylesheet from a string **/ $parser = Parser::newFromString( $cssText ); $stylesheet = $parser->parseStylesheet(); /** Report any parser errors **/ foreach ( $parser->getParseErrors() as list( $code, $line, $pos ) ) { // $code is a string that should be suitable as a key for an i18n library. // See errors.md for details. $error = lookupI18nMessage( "css-parse-error-$code" ); echo "Parse error: $error at line $line character $pos\n"; } /** Apply sanitization to the stylesheet **/ // If you need to customize the defaults, copy the code of this method and // modify it. $sanitizer = StylesheetSanitizer::newDefault(); $newStylesheet = $sanitizer->sanitize( $stylesheet ); /** Report any sanitizer errors **/ foreach ( $sanitizer->getSanitizationErrors() as list( $code, $line, $pos ) ) { // $code is a string that should be suitable as a key for an i18n library. // See errors.md for details. $error = lookupI18nMessage( "css-sanitization-error-$code" ); echo "Sanitization error: $error at line $line character $pos\n"; } /** Convert the sanitized stylesheet back to text **/ $newText = (string)$newStylesheet; // Or if you'd rather have it minified too $minifiedText = Wikimedia\CSS\Util::stringify( $newStylesheet, [ 'minify' => true ] );
一致性
该库遵循以下语法规范
清理器识别以下CSS模块
- 对齐级别 3,2018-12-06
- 动画级别 1,2018-10-11
- 背景级别 3,2017-10-17
- 换行级别 3,2018-12-04
- 层叠级别 4,2018-08-28
- 颜色级别 3,2018-06-19
- 合成级别 1,2015-01-13
- CSS级别 2,2011-06-07
- 显示级别 3,2019-07-11
- 滤镜效果级别 1,2018-12-18
- 弹性盒子级别 1,2018-11-19
- 字体级别 3,2018-09-20
- 网格级别 1,2017-12-14
- 图像级别 3,2019-10-10
- 遮罩级别 1,2014-08-26
- 多栏级别 1,2019-10-15
- 溢出级别 3,2018-07-31
- 页面级别 3,2018-10-18
- 定位级别 3,2016-05-17
- 形状级别 1,2014-03-20
- 尺寸级别 3,2019-05-22
- 文本级别 3,2019-11-13
- 文本装饰级别 3,2019-08-13
- 缓动级别 1,2019-04-30
- 变换级别 1,2019-02-14
- 过渡级别 1,2018-10-11
- 用户界面 3 级别 3,2018-06-21
- 用户界面 4 级别 4,2020-01-02
- 书写模式级别 4,2019-07-30
- 选择器级别 4,2019-02-25
- 逻辑属性和值级别 1,2018-08-27
还有,
- 来自 Pointer Events Level 2, 2019-04-04 的
touch-action
属性 - 来自 Selectors Level 4, 2022-11-11 的
:dir()
伪类
运行测试
composer install --prefer-dist
composer test
发布新版本
此包使用 wikimedia/update-history
及其约定。
有关详细信息,请参阅 https://www.mediawiki.org/wiki/UpdateHistory。
历史
我们需要一个具有多个属性的CSS清理器
- 严格按照现代标准进行解析。
- 包括所有错误的行和字符位置。
- 可配置以限制不安全的结构,例如外部URL引用。
- 错误易于本地化。
我们没有找到符合这些要求的库,因此我们创建了一个。
额外的发布历史记录在 HISTORY.md
中。