2016-10-05 1 views
0

PHPを使用して操作しようとしているCSSファイルがあります。だから私のCSSが...任意の文字で始まり、中かっこで終わる文字列を取得するPHP正規表現

.something { 
    display:none; 
    background: blue; 
} 

.somethingElse { 
    display:block; 
} 

私はクラス名の配列を取得できるようにしたい。だから私の配列は、これが私の試み($homepageは私のcssファイルである)である

['.something', '.somethingElse'] 

...のようになります...私はやってみました何

$homepage = file_get_contents("style.css"); 
$regex = '/[\s\S]\K[^{]*(?=})/m'; 
preg_match_all($regex, $homepage, $matches); 

はどんなで始まるすべての文字列を見つけました文字を閉じ、中かっこで終わります{。私の正規表現はすべて間違っていますが、適切な方法は何ですか?

+1

試行 ''〜^ \ H * \(?[^ \ N {] *)は\ * {〜m''です。任意のCSSを解析するには、CSSパーサを使用します。 [PHPでCSSファイルを解析する](http://stackoverflow.com/questions/3618381/parse-a-css-file-with-php)を参照してください。 –

+0

私はあなたがPHPで書かれたCSSパーサでうまくいくと思います。 –

+0

1つのCSSブロックの複数のクラス名はどうですか? ID名やその他のセレクタがそれらの間にある場合はどうなりますか? – revo

答えて

1

これは偉大な動作するはずです:

\.([\w]+)\s*{ 

クラス名は、グループ#1です。

例:

preg_match_all("/\.([\w]+)\s*{/", $homepage, $matches); 
関連する問題