例如,我有一个带有以下规则的test.css
.fs24 { font-size: 24px; }
.fc77777 { color: #777777; }
.fs24 { font-size: 20px; }
.fc77777 { color: #787878; }
我想要的是,一个php方法能够接受这个输入和输出
.fs24 { font-size: 24px; }
.fc77777 { color: #777777; }
正如您所看到的,我想通过他们的选择器来检测并过滤掉重复的css规则。3个场所必须持有:
- 过滤后的css规则可以是1行/多行,我所关心的是,只要它们的选择器以前存在,就必须将它们过滤掉
- 有很多字符串操作技术,我想找到的是最快的方法,原因是我在生产中的CSS应该很大(我们试图将所有CSS文件合并为一个文件,并过滤掉所有重复的规则)
- 后进先出法,即不会被过滤的规则是第一个CSS规则,任何其他具有重复选择器的CSS规则都将被完全删除:|
我的方法是解析输入文件,并用选择器作为字典键构建一个规则字典。对于每个规则,请检查选择器是否已在字典中。如果是,则放弃该规则,否则将新规则添加到字典中。
一旦您完成了对输入的解析,然后根据字典的内容创建新的.css文件。
您需要小心使用具有多个选择器的规则。我可能会为每个选择器创建一个字典条目,但如果没有一些额外的处理,您最终会在输出文件中重复代码。
使用此:
.fs24 { font-size: 24px !important;}
.fc77777 { color: #777777 !important;}
这样行吗:http://code.google.com/p/cssmin/?