Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function jaw_css_to_array($css) {
- if (empty($css)) return array();
- $css_array = array();
- $css = preg_replace('#/\*.*\*/#U', '', str_replace(array("\n","\r",';base64'), array('','','-base64'), $css));
- preg_match_all("/([^{}]*)\{(([^{}]*|(?R))*)\}/",$css,$matches);
- foreach ($matches[2] as $key => $rules) {
- $rules = trim($rules,"; \t\n\r\0\x0B");
- if (strpos($rules,'{') !== false) {
- $css_array[trim($matches[1][$key])] = jaw_css_to_array($rules);
- } else {
- $selectors = explode(',',$matches[1][$key]);
- $rules = explode(';',$rules);
- $rules_array = array();
- foreach ($rules as $rule) {
- if (!empty($rule)) {
- $rule = explode(':', $rule, 2);
- $rules_array[] = strtolower(trim($rule[0])) . ': ' . str_replace(array('-base64'), array(';base64'), trim($rule[1]));
- }
- }
- foreach ($selectors as $selector) {
- $selector = trim($selector);
- $selector = preg_replace_callback('/(\:)([a-z0-9\-]+)(\(|>|#|\.|\:|\s|$)/i', function ($matches) { return strtolower($matches[0]); }, $selector);
- $selector = preg_replace_callback('/(^|\s|>)([a-z0-9\s>]+)(>|#|\.|\:|\s|$)/i', function ($matches) { return strtoupper($matches[0]); }, $selector);
- $css_array[$selector] = (is_array($css_array[$selector]) ? array_merge($css_array[$selector],$rules_array) : $rules_array);
- }
- }
- }
- return $css_array;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement