【发布时间】:2019-01-15 16:53:03
【问题描述】:
我尝试拆分存储在变量中的 CSS 代码。 但是,如果我有媒体查询或类似问题,我总是会遇到问题。
我不需要详细的规则,但是如果里面可以有括号,如何解决在括号处分割?
@media xyz { div { width: 100px; } a {color: blue;}}
#other-div { width: 200px; color: red;}
结果我只希望这是部分:
1: @mediy xzy
- div { 宽度:100px; } 一个 {颜色:蓝色;}
3: #other-div
4 宽度:200px;颜色:红色;
如果我只有 2 个结果(整个块),删除 cmets 或拆分将不是问题,我可以自己解决。但是我不能用括号解决这个问题,而不是它总是在下一个右括号处中断。
【问题讨论】:
-
不要自己写这个,去寻找一个合适的现有 CSS 解析器吧。
-
所有解析器都很复杂,因为我不需要获取所有规则,我只需要使用标识符即可。所有解析器都有自己的问题,我尝试了 csstidy(无法使用 webkit 框架等特殊功能)、sabberworm(内容有问题:'\231')等等。
-
“我遇到问题”是什么意思?分享您的代码和错误消息,我们会看看哪里出错了
-
谢谢,csstidy 已被删除。使用 sabberworm,当我不做任何修改时:``` $parser = new Sabberworm\CSS\Parser($cssoutput); $oCss = $parser->parse(); $critical = $oCss->render(Sabberworm\CSS\OutputFormat::createCompact()); ``` 输出正在改变内容:'\421' 到 hyroglyphes。我只想要一开始的关键 css,所以我尝试删除规则 ``` foreach($oCss->getAllRuleSets() as $oRuleSet) { $oRuleSet->removeRule('content'); } ``` 那是行不通的,因为有hyroglyphes。我几乎尝试了每个字符集(至少输入是 utf-8 ..)
-
“所有的解析器都很复杂,因为我不需要获取所有规则,我只需要使用标识符即可。 ” - 那就尽情享受包含
#foo:before { content: "}"; }等内容的 CSS 吧:-)