4

だから私はhttp://unused-css.com/に似たようなことをする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);

最終的なエコーの結果を CSS ファイルに貼り付けると、サイトで使用されている CSS であっても、CSS の負荷が取り除かれました。

問題の特定を手伝ってくれる人はいますか? 申し訳ありませんが、問題がどこにあるのかについてこれ以上お役に立てません。

4

1 に答える 1

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 に存在するすべてのエントリがどこかに消えてしまいました。

于 2013-03-10T12:25:34.413 に答える