str_replaceを使用してCSS出力をクリーンアップしようとしていますが、定義された開始点と終了点を持つ文字列ブロックを無視する必要があります。PHPがstr_replaceの文字列ブロックを無視する
で始まる何かを無視:無視する
@media blah(this can be any value) {
内容:
.class {
property: value;
}
で終わる:
}/*ends*/
そして、代わりにそのブロックの外側でstr_replaceを行います
を.otherclass {property:value;}
PHP:う
.otherclass {
property:value;
}
方法:
$output = str_replace("{", "{\n", $output);
$output = str_replace("}", "}\n", $output);
理由は@mediaブロックがすでに正しくフォーマット、およびstr_replaceたシンプルなリターン読める線で触れるべきではないです適切なインデントを必要とするということですあなたはPHPでそれを言う?
ありがとうございます。
これは、ファイルをフォーマットする奇妙な方法です。正規表現を調べ、そこにもっと柔軟性を持たせてください...ファイル全体を配列に読み込んで配列全体を走査してください。もしあなたが '{' indentを開くタグに出会ったら、 '@ media'をスキップしたら...また、このスレッドを参照してくださいhttp://stackoverflow.com/questions/1376958/linux-automated-code-formatting-php-javascript-html-css-mysql – Alex
動的な集約とCSSの抽出、なぜ彼らは異なるフォーマットを持っているCSSコードブロックなので、IDEはここにはありません。設定定義に基づくカスタム入力。ほとんどの場合、無視するブロックをフォーマットし、外部CSSファイルをいくつかコピーし、圧縮された読み取り不可能なバージョンとして1つのファイルに追加します。今、私はいくつかの@mediaブロックを無視しながら、それらの集約/圧縮バージョンをより読みやすいCSSコードブロックに処理する必要があります。ありがとうございました – swan