yannickl88 / css-tokenizer
此包已被弃用且不再维护。未建议替代包。
CSS 分词器
1.2.0
2017-12-01 08:18 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ^4.6.0
README
PHP 实现的 CSS 分词器。此实现深受由 https://github.com/postcss/postcss 开发的 JavaScript 变种的启发。然而,结果略有不同。
用法
分词器的用法非常直接
<?php use Yannickl88\Component\CSS\Tokenizer; $tokens = (new Tokenizer())->tokenize('span { padding: 2px; margin: 2px; }');
这相当于
$tokens = [ new Token(Token::T_WORD, 'span', 1, 1, 1, 4), new Token(Token::T_WHITESPACE, ' ', 1, 5), new Token(Token::T_OPENCURLY, '{', 1, 6), new Token(Token::T_WHITESPACE, ' ', 1, 7), new Token(Token::T_WORD, 'padding', 1, 8, 1, 14), new Token(Token::T_COLON, ':', 1, 15), new Token(Token::T_WHITESPACE, ' ', 1, 16), new Token(Token::T_WORD, '2px', 1, 17, 1, 19), new Token(Token::T_SEMICOLON, ';', 1, 20), new Token(Token::T_WHITESPACE, ' ', 1, 21), new Token(Token::T_WORD, 'margin', 1, 22, 1, 27), new Token(Token::T_COLON, ':', 1, 28), new Token(Token::T_WHITESPACE, ' ', 1, 29), new Token(Token::T_WORD, '2px', 1, 30, 1, 32), new Token(Token::T_SEMICOLON, ';', 1, 33), new Token(Token::T_WHITESPACE, ' ', 1, 34), new Token(Token::T_CLOSECURLY, '}', 1, 35), ];
接下来你要做什么完全取决于你!
标记类型
如果你有一个标记,你可以访问一些公共属性
$token->type; // for the type $token->chars; // for the characters $token->lines; // array containing start and (sometimes) end line $token->offsets; // array containing start and (sometimes) end offset
注意:只有可以跨越多行的标记在
lines
和offsets
字段中才有第二个值。这些是T_WORD
、T_WHITESPACE
、T_STRING
、T_ADWORD
和T_COMMENT
。
以下类型已定义
T_WHITESPACE
,空白字符,如\t
、\n
、\r
和\f
。T_WORD
,所有单词,如color
、padding-top
或12px
。T_COLON
,冒号:
。T_SEMICOLON
,分号;
。T_COMMA
,逗号,
。T_TILDE
,波浪号~
。T_STRING
,引号'
或"
之间的所有内容,如"/path/to/my/image.jpg"
。T_OPENBRACKET
,开括号(
。T_CLOSEBRACKET
,闭括号)
。T_OPENCURLY
,开大括号{
。T_CLOSECURLY
,闭大括号}
T_OPENSQUARE
,开方括号[
。T_CLOSESQUARE
,闭方括号]
T_ATWORD
,所有以@
开头的单词,如@media
或@font-face
。T_COMMENT
,注释,如/* comment */
或// comment
。
注意:还有
T_BRACKETS
,但这仅在解析错误的情况下才会看到此标记。
安装
安装非常简单,此包可在 packagist 上找到。
$ composer require yannickl88/css-tokenizer
或者你可以手动将其添加到 composer.json 中
"require" : { "yannickl88/css-tokenizer" : "*@dev-master" }
注意:如果你想使用最新的更改,可以使用 dev-master,但强烈不建议在生产代码中使用!