同步操作将从 黎晓/JavaScript 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php/*** Class Minify_CSS_Compressor* @package Minify*//*** Compress CSS** This is a heavy regex-based removal of whitespace, unnecessary* comments and tokens, and some CSS value minimization, where practical.* Many steps have been taken to avoid breaking comment-based hacks,* including the ie5/mac filter (and its inversion), but expect tricky* hacks involving comment tokens in 'content' value strings to break* minimization badly. A test suite is available.** @package Minify* @author Stephen Clay <steve@mrclay.org>* @author http://code.google.com/u/1stvamp/ (Issue 64 patch)*/class Minify_CSS_Compressor {/*** Minify a CSS string** @param string $css** @param array $options (currently ignored)** @return string*/public static function process($css, $options = array()){$obj = new Minify_CSS_Compressor($options);return $obj->_process($css);}/*** @var array*/protected $_options = null;/*** Are we "in" a hack? I.e. are some browsers targetted until the next comment?** @var bool*/protected $_inHack = false;/*** Constructor** @param array $options (currently ignored)*/private function __construct($options) {$this->_options = $options;}/*** Minify a CSS string** @param string $css** @return string*/protected function _process($css){$css = str_replace("\r\n", "\n", $css);// preserve empty comment after '>'// http://www.webdevout.net/css-hacks#in_css-selectors$css = preg_replace('@>/\\*\\s*\\*/@', '>/*keep*/', $css);// preserve empty comment between property and value// http://css-discuss.incutio.com/?page=BoxModelHack$css = preg_replace('@/\\*\\s*\\*/\\s*:@', '/*keep*/:', $css);$css = preg_replace('@:\\s*/\\*\\s*\\*/@', ':/*keep*/', $css);// apply callback to all valid comments (and strip out surrounding ws$css = preg_replace_callback('@\\s*/\\*([\\s\\S]*?)\\*/\\s*@',array($this, '_commentCB'), $css);// remove ws around { } and last semicolon in declaration block$css = preg_replace('/\\s*{\\s*/', '{', $css);$css = preg_replace('/;?\\s*}\\s*/', '}', $css);// remove ws surrounding semicolons$css = preg_replace('/\\s*;\\s*/', ';', $css);// remove ws around urls$css = preg_replace('/url\\( # url(\\s*([^\\)]+?) # 1 = the URL (really just a bunch of non right parenthesis)\\s*\\) # )/x', 'url(1ドル)', $css);// remove ws between rules and colons$css = preg_replace('/\\s*([{;]) # 1 = beginning of block or rule separator\\s*([\\*_]?[\\w\\-]+) # 2 = property (and maybe IE filter)\\s*:\\s*(\\b|[#\'"-]) # 3 = first character of a value/x', '1ドル2ドル:3ドル', $css);// remove ws in selectors$css = preg_replace_callback('/(?: # non-capture\\s*[^~>+,\\s]+ # selector part\\s*[,>+~] # combinators)+\\s*[^~>+,\\s]+ # selector part{ # open declaration block/x',array($this, '_selectorsCB'), $css);// minimize hex colors$css = preg_replace('/([^=])#([a-f\\d])\2円([a-f\\d])\3円([a-f\\d])\4円([\\s;\\}])/i', '1ドル#2ドル3ドル4ドル5ドル', $css);// remove spaces between font families$css = preg_replace_callback('/font-family:([^;}]+)([;}])/',array($this, '_fontFamilyCB'), $css);$css = preg_replace('/@import\\s+url/', '@import url', $css);// replace any ws involving newlines with a single newline$css = preg_replace('/[ \\t]*\\n+\\s*/', "\n", $css);// separate common descendent selectors w/ newlines (to limit line lengths)$css = preg_replace('/([\\w#\\.\\*]+)\\s+([\\w#\\.\\*]+){/', "1ドル\n2ドル{", $css);// Use newline after 1st numeric value (to limit line lengths).$css = preg_replace('/((?:padding|margin|border|outline):\\d+(?:px|em)?) # 1 = prop : 1st numeric value\\s+/x',"1ドル\n", $css);// prevent triggering IE6 bug: http://www.crankygeek.com/ie6pebug/$css = preg_replace('/:first-l(etter|ine)\\{/', ':first-l1ドル {', $css);return trim($css);}/*** Replace what looks like a set of selectors** @param array $m regex matches** @return string*/protected function _selectorsCB($m){// remove ws around the combinatorsreturn preg_replace('/\\s*([,>+~])\\s*/', '1ドル', $m[0]);}/*** Process a comment and return a replacement** @param array $m regex matches** @return string*/protected function _commentCB($m){$hasSurroundingWs = (trim($m[0]) !== $m[1]);$m = $m[1];// $m is the comment content w/o the surrounding tokens,// but the return value will replace the entire comment.if ($m === 'keep') {return '/**/';}if ($m === '" "') {// component of http://tantek.com/CSS/Examples/midpass.htmlreturn '/*" "*/';}if (preg_match('@";\\}\\s*\\}/\\*\\s+@', $m)) {// component of http://tantek.com/CSS/Examples/midpass.htmlreturn '/*";}}/* */';}if ($this->_inHack) {// inversion: feeding only to one browserif (preg_match('@^/ # comment started like /*/\\s*(\\S[\\s\\S]+?) # has at least some non-ws content\\s*/\\* # ends like /*/ or /**/@x', $m, $n)) {// end hack mode after this comment, but preserve the hack and comment content$this->_inHack = false;return "/*/{$n[1]}/**/";}}if (substr($m, -1) === '\\') { // comment ends like \*/// begin hack mode and preserve hack$this->_inHack = true;return '/*\\*/';}if ($m !== '' && $m[0] === '/') { // comment looks like /*/ foo */// begin hack mode and preserve hack$this->_inHack = true;return '/*/*/';}if ($this->_inHack) {// a regular comment ends hack mode but should be preserved$this->_inHack = false;return '/**/';}// Issue 107: if there's any surrounding whitespace, it may be important, so// replace the comment with a single spacereturn $hasSurroundingWs // remove all other comments? ' ': '';}/*** Process a font-family listing and return a replacement** @param array $m regex matches** @return string*/protected function _fontFamilyCB($m){// Issue 210: must not eliminate WS between words in unquoted families$pieces = preg_split('/(\'[^\']+\'|"[^"]+")/', $m[1], null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);$out = 'font-family:';while (null !== ($piece = array_shift($pieces))) {if ($piece[0] !== '"' && $piece[0] !== "'") {$piece = preg_replace('/\\s+/', ' ', $piece);$piece = preg_replace('/\\s?,\\s?/', ',', $piece);}$out .= $piece;}return $out . $m[2];}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。