使用PHP过滤掉重复CSS规则的最快方法是什么


What is the fastest method to filter out duplicate CSS Rule using PHP?

例如,我有一个带有以下规则的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个场所必须持有:

  1. 过滤后的css规则可以是1行/多行,我所关心的是,只要它们的选择器以前存在,就必须将它们过滤掉
  2. 有很多字符串操作技术,我想找到的是最快的方法,原因是我在生产中的CSS应该很大(我们试图将所有CSS文件合并为一个文件,并过滤掉所有重复的规则)
  3. 后进先出法,即不会被过滤的规则是第一个CSS规则,任何其他具有重复选择器的CSS规则都将被完全删除:|

我的方法是解析输入文件,并用选择器作为字典键构建一个规则字典。对于每个规则,请检查选择器是否已在字典中。如果是,则放弃该规则,否则将新规则添加到字典中。

一旦您完成了对输入的解析,然后根据字典的内容创建新的.css文件。

您需要小心使用具有多个选择器的规则。我可能会为每个选择器创建一个字典条目,但如果没有一些额外的处理,您最终会在输出文件中重复代码。

使用此:

.fs24 { font-size: 24px !important;}
.fc77777 { color: #777777 !important;}

这样行吗:http://code.google.com/p/cssmin/?