使用PHP脚本从站点中删除未使用的CSS

使用PHP脚本从站点中删除未使用的CSS,php,css,optimization,Php,Css,Optimization,因此,我正在尝试编写一个PHP脚本,它可以执行类似的操作 -基本上,在我的网站上找到所有未使用的CSS并将其删除以创建一个“干净”的CSS文件 我使用Firefox插件“Dust me”来抓取站点,并显示所有未使用的选择器 Dustme插件以以下格式返回未使用的选择器: #header #nav #header #nav p #header #nav p a etc 因此,我的PHP脚本如下所示: <?php //My site CSS (compressed) -- a sm

因此,我正在尝试编写一个PHP脚本,它可以执行类似的操作 -基本上,在我的网站上找到所有未使用的CSS并将其删除以创建一个“干净”的CSS文件

我使用Firefox插件“Dust me”来抓取站点,并显示所有未使用的选择器

Dustme插件以以下格式返回未使用的选择器:

#header #nav
#header #nav p
#header #nav p a    
etc
因此,我的PHP脚本如下所示:

<?php

//My site CSS (compressed) -- a small test sample
$allcss = 
"body{color:#1c4866;font:13px/16px;}
#header #nav {float: left;}
#header #nav p {font-weight: bold;}
#header #nav p a {color: blue;}
input,textarea,select{font:13px/16px;color:#999;}";


//A sample of unused CSS selectors as returned by The Dustme plugin
$unusedcss =  
"#header #nav
#header #nav p
#header #nav p a";

//and the code:
$rules = preg_split ('/$\R?^/m', $allcss); //Create array from all site css

$remove = preg_split ('/$\R?^/m', $unusedcss); //Create array from unused CSS selectors

$final = array();
foreach ($rules as $rule)
{   
    if (!in_array(substr($rule, 0, strpos($rule, " ")), $remove) )
    $final[] = $rule .= "<br />";
}

 echo implode("\n", $final);

您是否尝试过更换:

if (!in_array(substr($rule, 0, strpos($rule, " ")), $remove) )
    $final[] = $rule .= "<br />";
if(!in_数组(substr($rule,0,strpos($rule,”)),$remove))
$final[]=$rule.=“
”;
与:

if(!in_数组(substr($rule,0,strpos($rule,“{”),$remove)){
$final[]=$rule.=“
”; }

我在本地和$final中尝试了这一点,$remove where go中的所有条目都出现了。

有一个名为mincss的python应用程序可供使用。我尝试的是显示所有未使用的CSS-Dustme插件爬行整个站点,而不仅仅是一个页面。@l2aelba你在说什么?嗯,我只有你的示例可供使用如果不知道您使用的是原始的和未使用的CSS,就很难理解为什么不删除规则。
if (!in_array(substr($rule, 0, strpos($rule, " {")), $remove) ) {
    $final[] = $rule .= "<br />";
}