【问题标题】:Remove unused CSS from site with PHP script使用 PHP 脚本从站点中删除未使用的 CSS
【发布时间】:2013-02-24 00:56:28
【问题描述】:

所以我正在尝试编写一个类似于http://unused-css.com/ 的 PHP 脚本 - 基本上在我的网站上找到所有未使用的 CSS 并将其删除以创建一个“干净”的 CSS 文件。

我使用 Firefox 插件“除尘”来抓取网站并显示所有未使用的选择器。

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);

当我将最终回显的结果粘贴到 CSS 文件中时,已经删除了一部分 CSS,甚至是网站上使用的 CSS。

谁能帮我确定问题?抱歉,对于问题出在哪里,我无法提供更多帮助。

【问题讨论】:

  • GitHub 上有一个名为 mincss 的 Python 应用程序,它可能很有用。
  • 我正在尝试做的是显示所有未使用的 CSS - Dustme 插件会抓取整个网站,而不仅仅是一页。
  • @l2aelba 你在说什么??

标签: php css optimization


【解决方案1】:

您是否尝试过替换:

if (!in_array(substr($rule, 0, strpos($rule, " ")), $remove) )
    $final[] = $rule .= "<br />";

与:

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

我在本地尝试了这个,在 $final 中,$remove 中的所有条目都消失了。

【讨论】:

  • 嗯,我只有你的例子可以使用,为此它似乎可以完成这项工作。在不知道您正在使用的原始和未使用的 CSS 的情况下,很难弄清楚为什么没有删除规则。
猜你喜欢
  • 2012-08-18
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多