zxqfox / css-selector-parser
简单的CSS选择器解析器。https://github.com/mdevils/node-css-selector-parser 的 PHP 版本
0.0.5
2014-10-27 13:57 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/php-invoker: dev-master
- phpunit/phpunit: 4.3.*
This package is not auto-updated.
Last update: 2024-09-24 03:38:55 UTC
README
快速且内存消耗低的CSS选择器解析器。
将CSS选择器解析成对象模型。
安装
composer require zxqfox/css-selector-parser
使用
use CSSSelectorParser\Parser; $parser = new Parser(); $parser->registerSelectorPseudos('has'); $parser->registerNestingOperators('>', '+', '~'); $parser->registerAttrEqualityMods('^', '$', '*', '~'); $parser->enableSubstitutes(); $css = 'a[href^=/], .container:has(nav) > a[href]:lt($var)'; echo json_encode($parser->parse($css), JSON_PRETTY_PRINT);
生成
{ type: 'selectors',
selectors:
[ { type: 'ruleSet',
rule:
{ tagName: 'a',
attrs: [ { name: 'href', operator: '^=', valueType: 'string', value: '/' } ],
type: 'rule' } },
{ type: 'ruleSet',
rule:
{ classNames: [ 'container' ],
pseudos:
[ { name: 'has',
valueType: 'selector',
value: { type: 'ruleSet', rule: { tagName: 'nav', type: 'rule' } } } ],
type: 'rule',
rule:
{ tagName: 'a',
attrs: [ { name: 'href' } ],
pseudos: [ { name: 'lt', valueType: 'substitute', value: 'var' } ],
nestingOperator: '>',
type: 'rule' } } } ] }
令牌描述
类型可能是以下之一
- 选择器 — 选择器列表,令牌包含 选择器 数组,包含 ruleSet 令牌(基于 "," 操作符)。
- ruleSet — 选择器,令牌包含 rule 字段,包含 rule-type 对象。
- rule — 单个规则。
rule 类型字段
- tagName — 规则的标签名(例如 "div"),可能是 '*'。
- classNames — 规则的CSS类名列表。
- attrs — 属性规则列表;规则可能包含字段
- name — 属性名,必填字段。
- valueType — 比较值的类型 ("string" 或 "substitute")。
- operator — 属性值比较运算符。
- value — 比较属性值。
- pseudos — 伪类规则列表;规则可能包含字段
- name — 伪类名,必填字段。
- valueType — 参数类型 ("string", "selector" 或 "substitute")。
- value — 伪类参数。
- nestingOperator — 用于嵌套此规则的运算符(例如,在选择器 "tag1 > tag2" 中,tag2 将具有 nestingOperator=">")
- rule — 嵌套规则。
许可
MIT