preg_match_all()
次の目的でPHPで使用できる単一の正規表現を指定しようとしています(失敗しています) 。
.foo { bar }
.baz, .bot { bip, bop }
{}の間にないもの{
だけを数える必要があります。,
上記のサンプルを考えると、正確に3つの一致が必要です。私の難しさ(無知)は、「中括弧の間のコンマを一致させない」部分を指定する方法がわからないことです。私の現在の正規表現は、すべてのコンマと中括弧を開きます。
({)*(,)*
これを試して:
\{.+?\}|,
意味:
\{ # If you can match a brace
.+? # then also grab the minimum amount of other charactors
\} # until you reach the closing brace
|, # or if there was no brace then just match a comma
正確ではないが正確なカウントが必要な場合、これは迅速で汚い方法です。
$selector_count = substr_count($css, ',') + substr_count($css, '{') - substr_count($css, '@media');
それは,
css内のすべてをカウントするので、そのようなrgba(0, 0, 0, 0.5)
使用のようなルール,
もカウントされます。これは、制限について知っている場合に役立ちます。受け入れられたソリューションはでは機能しません@media
。