2012-03-06 8 views
0

は例えば、私は以下のルールでtest.cssを持ってPHPを使用して重複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. LIFO、Last In First Out、別名フィルタリングされないものが最初のCSSルール、その他のCSSルールがのセレクタが完全に削除されます。
+0

1.さまざまなセレクタが同じ要素を指すことができます2.何か試したことがあるのか​​、私たちはあなたの仕事をしたいのですか? – zerkms

+1

これをすべて備えている既存のブラウザ開発ツールを使用する方がよいでしょう。 CSSのカスケーディングは小さなフライではありません(そのため、名前の通りです)。 – BoltClock

+0

@Zerkms、私が達成しようとしているのは、10個のCSSファイルを1個のCSSファイルに縮小することです。サーバ上の複製セレクタをトリムしたいと思っています。 – M4G1C14N

答えて

0

私のアプローチは、入力ファイルを解析してセレクタを辞書キーとして規則の辞書を構築することです。各ルールについて、セレクタがすでに辞書に入っているかどうかを確認します。そうでなければルールを破棄し、そうでなければ新しいルールを辞書に追加する。

入力の解析が完了したら、辞書の内容から新しい.cssファイルを作成します。

複数のセレクタを持つルールには注意が必要です。私はおそらく、各セレクタのために1つの辞書エントリを作成するだろうが、いくつかの追加の処理をせずに出力ファイルにコードの重複で終わるだろう。

+0

あなたの入力におかげでたくさん:)。 1つの質問が発生し、入力を辞書に解析する最も速い方法は何ですか? Preg_matchを使用する以外の方法をお勧めしますか? (preg_matchを使うこと以外はもっと良い質問でしょうか?):P – M4G1C14N

+0

Preg Matchを使って、次の$ pattern = '/(?P 。*){ {}] *)}/'; 正しい配列を出力するpreg_match_all($ pattern、$ input、$ matches);それは後で辞書を作成するために使用することができます...しかし、主な質問は明らかですが、これは本当に最速の方法ですか?私は本当に懸念しているCSSの量は、単一のCSSファイルに解析する必要があるため、私のプロジェクトでは、私の使命は、これを処理する最も効果的な方法を(読んで:最速)を見つけることです:) D – M4G1C14N

0

使用この:

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

いいえ... cssをまったくトリミングしません...私はできるだけ小さいので、サーバー上の重複を排除することは重要ですが、CSSをしたい:) – M4G1C14N

関連する問題