だから私はスタイルシートのパーサーを構築しています。私の CSS ファイルでは、次のように解析します。
body {
background-image: &gradient(#1073b8, &saturate(#1073b8, -20), 40);
}
結果は次のような値になります。
body {
background-image: url(/cache/graident12345.png);
}
&gradient()
これは、キャッチして実行する関数の出力です。しかし、 への引数の 1 つ&gradient()
は の結果で&saturate()
あるため、階層的であり、preg_replace()
内部から外部へと処理する必要がありますが、どうすればよいでしょうか? したがって、最初にキャッチして解析&saturate()
し、色の HEX 値を返します。これは、解析時に文字列に含まれます&gradient()
。私の現在の検索コードは次のようになります。
if (preg_match("/\&(gradient|saturate)\((.*?)\)/", $value, $m)){
$arg = explode(", ", $m[2]); # splits argument to the function
if ($m[1] == "saturate"){
$value = str_replace($m[0], saturate($arg[1], $arg[2]);
}
}
また、機能が利用可能になり次第、機能を追加します。または、関数名も正規表現でキャッチします。
私は自分自身を明確にしますか?何か案は?:)