更新: debug mode、input、およびoutputを追加しました。
さて、CSS がたくさんあり、いくつかのルールを削除したいと思います。これらを仮定しましょう:
- 各行にはセレクターが 1 つだけあります。
- 各行はそのセレクターから始まります。
- 各行には 1 つの完全なルールがあります。つまり、
selector {property: value;}
3 番目のオプションがうまくいかない場合は、多くの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>
上記のスクリプトにはデバッグが含まれています。true に設定$debug
すると、さまざまな項目がチェックされていることがわかります。
これに与えられる入力は次のとおりです。
.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; }