更新:添加了调试模式、输入和输出。
好吧,我猜你有一堆 CSS,你想删除一些规则。让我假设这些:
- 每行只有一个选择器。
- 每行都以该选择器开头。
- 每一行都有一个完整的规则。IE,
selector {property: value;}
如果第三个选项不成功,有很多CSS 压缩器,你可以使用它们来制作这个 CSS:
#footer
{
display: block;
}
进入:
#footer { display: block; }
现在,一旦您将其保存在文本文件中,您就可以使用 PHP 或一些好的编程语言进行操作。我不推荐客户端之一。假设您有 PHP,并且这里有一组规则:
#nav { border: 1px solid; color: black; }
#footer { display: block; }
你有你的数组:
$remove = array('.header', '#footer', '#nav');
你可以使用这样的东西:
<pre><?php
$debug = false;
$rules[] = ".header { border: 1px solid; color: black; }";
$rules[] = "#nav { border: 1px solid; color: black; }";
$rules[] = "#footer { display: block; }";
$rules[] = "#header { border: 1px solid; color: black; }";
$rules[] = ".nav { border: 1px solid; color: black; }";
$rules[] = ".footer { display: block; }";
$remove = array('.header', '#footer', '#nav');
$final = array();
foreach ($rules as $rule)
{
if ($debug) echo "Debug: ", var_dump(strpos($rule, " ")) . "\n";
if ($debug) echo "Debug: ", var_dump(substr($rule, 0, strpos($rule, " "))) . "\n";
if ($debug) echo "Debug: ", var_dump(in_array(substr($rule, 0, strpos($rule, " ")), $remove)) . "\n";
if ($debug) echo "---\n";
if ( !in_array(substr($rule, 0, strpos($rule, " ")), $remove) )
$final[] = $rule;
}
echo implode("\n", $final);
?></pre>
上面的脚本包括一个调试。如果设置$debug
为 true,您可以看到正在检查的不同内容。
对此的输入是:
.header { border: 1px solid; color: black; }
#nav { border: 1px solid; color: black; }
#footer { display: block; }
#header { border: 1px solid; color: black; }
.nav { border: 1px solid; color: black; }
.footer { display: block; }
输出是:
#header { border: 1px solid; color: black; }
.nav { border: 1px solid; color: black; }
.footer { display: block; }