By Gleb Esman, gesman /at/ mensk.com */ TTT; header ('Content-type: text/css; charset: UTF-8'); if (!@$_GET['file']) exit ($_SYNTAX); else { $css = @file_get_contents (@$_GET['file']); if (!trim($css)) exit ('/* Scopecss: No content found in file: ' . @$_GET['file'] . ' */'); } if (@$_GET['id'] || @$_GET['class'] || @$_GET['tag']) { if (@$_GET['id']) $selector = "#{$_GET['id']}"; else if (@$_GET['class']) $selector = ".{$_GET['class']}"; else if (@$_GET['tag']) $selector = $_GET['tag']; // Kill single line comments $css = preg_replace ('|//.*$|m', '', $css); // Kill multiline comments $css = preg_replace ('|/\*.*?\*/|s', '', $css); // Capture meaningful tags to be prepended with desired class or id $css_arr = preg_split ('@([\{\}][^\{\}\@]*?\{)@s', $css, -1, PREG_SPLIT_DELIM_CAPTURE); // process very first element separately $tmp_arr = explode(',', $css_arr[0]); foreach ($tmp_arr as $tidx=>$tel) { $tmp_arr[$tidx] = ("$selector " . $tmp_arr[$tidx]); } $css_arr[0] = implode (',', $tmp_arr); foreach ($css_arr as $idx=>$css_chunk) { if (($idx%2)) { $tmp_arr = explode(',', $css_chunk); foreach ($tmp_arr as $tidx=>$tel) { if (!$tidx) { if ($tel[0] == '{') $tmp_arr[$tidx] = str_replace ('{', '{ '.$selector, $tmp_arr[$tidx]); else if ($tel[0] == '}') $tmp_arr[$tidx] = str_replace ('}', '} '.$selector, $tmp_arr[$tidx]); } else { $tmp_arr[$tidx] = ("$selector " . $tmp_arr[$tidx]); } } $css_arr[$idx] = implode (',', $tmp_arr); } } $css = implode ($css_arr); // Melt multiple spaces $css = preg_replace ('|\s+|s', ' ', $css); } echo $css;