所以我正在为样式表构建一个解析器。在我的 CSS 文件中,我将解析如下内容:
body {
background-image: &gradient(#1073b8, &saturate(#1073b8, -20), 40);
}
结果将是这样的值:
body {
background-image: url(/cache/graident12345.png);
}
这是我的&gradient()
函数的输出,我捕获并执行。但是其中一个论点&gradient()
是 的结果&saturate()
,所以它是分层的,我需要preg_replace()
从内到外处理它们,但我该怎么做呢?所以首先 catch 和 parse &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]);
}
}
我将添加功能,因为我使它们可用。或者,在正则表达式中也捕获函数名称。
我说清楚了吗?有任何想法吗?:)