I'm using this function to parse the CSS files, but when it comes to property values containing semicolon, it breaks. Example:
#logo {
background-image: url("data:image/png;base64,..................");
}
I changed the explode delimiter to " " but it didn't produce expected results. Please help.
Function:
function parse($file){
$css = file_get_contents($file);
preg_match_all( '/(?ims)([a-z0-9\s\.\:#_\-@,]+)\{([^\}]*)\}/', $css, $arr);
$result = array();
foreach ($arr[0] as $i => $x){
$selector = trim($arr[1][$i]);
$rules = explode(';', trim($arr[2][$i]));
$rules_arr = array();
foreach ($rules as $strRule){
if (!empty($strRule)){
$rule = explode(":", $strRule);
$rules_arr[trim($rule[0])] = trim($rule[1]);
}
}
$selectors = explode(',', trim($selector));
foreach ($selectors as $strSel){
$result[$strSel] = $rules_arr;
}
}
return $result;
}
Execution:
$css = parse('content/custom.css');
echo print_r($css);