私は次のパターンを持っています:
[\{\}].*[\{\}]
次のテスト文字列を使用します(必要に応じてさらに提供できます)。
}.prop{hello:ars;} //shouldn't match
}#prop{} //should match
}.prop #prop {} //should match
このパターンの目的は、空のcssルールセットを見つけることです。2番目の角かっこのセットの間の文字との一致を除外する方法を誰かが提案できますか?解決策に近づいたら、パターンを更新します。
編集: http: //gskinner.com/RegExr/で
このパターン:[\}].*[\{]{1}[/}]{1}
私が理解していない理由でphpに転送すると壊れていますが、望ましい結果が得られているようです。
編集:これが別の質問である必要がある場合は、最初に謝罪します。PHPの最初の編集でパターンを使用する:
$pattern = "/[\}].*[\{]{1}[/}]{1}/";
preg_match_all ($pattern, $new_css, $p);
print_r($p);
$ new_cssが、空のルールセットを含むアップロードされたcssファイルのコンテンツの文字列である場合、$pが入力されることはありません。しかし、私はこのパターンが大丈夫であることを知っています。誰かが問題が何であるかを見ることができますか?
編集:最終的な解決策
//take out other unwanted characters
$pattern = "/\}([\.#\w]\w+\s*)+{}/";
//do it twice to beat any deformation
$new_css = preg_replace ($pattern, '}', $new_css);
$new_css = preg_replace ($pattern, '}', $new_css);