Не все является по-настоящему сериализуемым. Возьмите сетевое сокетное соединение, например. Вы могли сериализировать данные/состояние своего объекта сокета, но сущность активного соединения будет потеряна.
Существуют утилиты, которые могут соответствовать вашим потребностям и избавить вас от потенциально ошибочного регулярного выражения.
Компрессор YUI поддерживает минификацию файлов CSS и javascript.
Вы можете рассмотреть этот или другие существующие варианты, прежде чем писать свои собственные.
Не знаю, как вы это сделаете, но вот сценарий, который написал мой друг, довольно быстро сокращает CSS:
function minimize_css($input)
{
// Remove comments
$output = preg_replace('#/\*.*?\*/#s', '', $input);
// Remove whitespace
$output = preg_replace('/\s*([{}|:;,])\s+/', '$1', $output);
// Remove trailing whitespace at the start
$output = preg_replace('/\s\s+(.*)/', '$1', $output);
// Remove unnecesairy ;'s
$output = str_replace(';}', '}', $output);
return $output;
}
Это то, что я использую в Samstyle PHP Framework :
$regex = array(
"`^([\t\s]+)`ism"=>'',
"`([:;}{]{1})([\t\s]+)(\S)`ism"=>'$1$3',
"`(\S)([\t\s]+)([:;}{]{1})`ism"=>'$1$3',
"`\/\*(.+?)\*\/`ism"=>"",
"`([\n|\A|;]+)\s//(.+?)[\n\r]`ism"=>"$1\n",
"`(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+`ism"=>"\n"
);
$buffer = preg_replace(array_keys($regex),$regex,$buffer);
Надеюсь, это поможет!
Это кажется прекрасным примером того, когда не изобретать заново колесо. Почти каждый сайт в Интернете использует CSS, и все крупные как-то его сжимают. Их методы уже протестированы и оптимизированы. Зачем катить свою собственную, если это не нужно?
Майк и Грумбо уже высказали конкретные предложения, но я просто хотел указать на общий принцип.
Насколько я знаю, вы не можете этого сделать, потому что вы фактически меняете шаблон, когда разбиваете его на несколько строк.
Редактировать: и да, +1, чтобы не повторять -изобретая колесо.
function minifyCSS($css){
$css = trim($css);
$css = str_replace("\r\n", "\n", $css);
$search = array("/\/\*[^!][\d\D]*?\*\/|\t+/","/\s+/", "/\}\s+/");
$replace = array(null," ", "}\n");
$css = preg_replace($search, $replace, $css);
$search = array("/;[\s+]/","/[\s+];/","/\s+\{\\s+/", "/\\:\s+\\#/", "/,\s+/i", "/\\:\s+\\\'/i","/\\:\s+([0-9]+|[A-F]+)/i","/\{\\s+/","/;}/");
$replace = array(";",";","{", ":#", ",", ":\'", ":$1","{","}");
$css = preg_replace($search, $replace, $css);
$css = str_replace("\n", null, $css);
return $css;
}
http: / /mhameen.blogspot.com/2010/04/crystal-script-manger-for-php.html#links