我有一个名为 $value 的变量,其中包含带有 css 表达式的字符串。它可以是一个值或一个函数:
rgb( 25, 128, 128 );
、transform( -50% -50% );
、bottom 50px right 100px;
、#198080;
、bold;
、1px solid red;
我希望能够识别表达式是否包含函数或字符串
$real_value = (is_numeric($value)) ?
$value :
(is_string($value) ?
(preg_match('/^\w/', $value) ? $value : '"' . $value . '"') :
'"'. $value . '"');
这个想法是将引号内的值分配给
$real_value
,如下所示:"#198080";
或this"bottom 50px right 100px";
,但如果它是一个函数,则只需返回相同的表达式。
我开始创建正则表达式,但我无法在不破坏它的情况下越过第一个括号:
/^\w\-?\w?\(/
所以我需要创建一个正则表达式来检查字符串是否具有 css 函数的结构。它们并不多(https://www.w3schools.com/cssref/css_functions.php)或者只写一个检查括号
尝试这样使用
$real_value = preg_match('/^[a-zA-Z\-]+\s*\(.*\)$/', $value) ? $value : '"' . $value . '"';