以下代码从CSS文件中删除所有换行符和空格。但问题是如果CSS文件有这样的东西:
search_path
输出将是:
.sample {
padding: 0px 2px 1px 4px;
}
我想要介于两者之间的空格(0px 2px 1px 4px)。
这是我使用过的代码:
.sample{padding:0px2px1px4px;}
答案 0 :(得分:2)
在您的代码中,添加以下行:
$str = preg_replace("/([0-9]*px(?!;))/", "$1 ", $str);
会为任何 px 字符串添加空格,后跟不是a的字符串;
通过添加您指出的空格,您可以修复代码。
$str=file_get_contents('sample.css');
//replace all new lines and spaces
$str = str_replace("\n", "", $str);
$str = str_replace(" ", "", $str);
$str = preg_replace("/([0-9]*px(?!;))/", "$1 ", $str);
//write the entire string
file_put_contents('sample.css', $str);
您可以使用任何Php压缩库,例如minify,它提供完整的css压缩选项。
我希望这会有所帮助。
答案 1 :(得分:1)
我写了这个小preg_replace
:
$css = preg_replace(
array('/\s*(\w)\s*{\s*/','/\s*(\S*:)(\s*)([^;]*)(\s|\n)*;(\n|\s)*/','/\n/','/\s*}\s*/'),
array('$1{ ','$1$3;',"",'} '),
$css
);
它会适当地折叠所有内容 - 在属性定义中留下空格,但不会删除注释。
答案 2 :(得分:0)
要在PHP中缩小CSS,最好使用Steve Clay' Minify library。重新发明轮子毫无意义。
Here简要介绍了如何安装和配置库。
答案 3 :(得分:0)
这是一个简单而有效的解决方案:
// Get style contents
$style = file_put_contents('your_style.css');
// Minify it
$minified = $style;
$minified = str_replace("\n", "", $minified);
$minified = str_replace(" ", " ", $minified);
$minified = str_replace(" ", " ", $minified);
$minified = str_replace(" {", "{", $minified);
$minified = str_replace("{ ", "{", $minified);
$minified = str_replace(" }", "}", $minified);
$minified = str_replace("} ", "}", $minified);
$minified = str_replace(", ", ",", $minified);
$minified = str_replace("; ", ";", $minified);
$minified = str_replace(": ", ":", $minified);
// Write it
header("Content-type: text/css; charset: UTF-8");
echo $minified;
它将删除所有不必要的空白区域。但是,它不会删除注释或将4个数字替换为1个可以替换的数字,但是却做得很好。 让我知道我是否缺少某些内容,或者您是否有想法如何轻松地添加注释删除和/或其他功能。
答案 4 :(得分:-1)
如果要删除每行周围的制表符和空格,但要保留样式中的空格。你应该只用explode()
作为标记分隔符\n
整个内容并遍历每一行并在其上使用php的trim(),然后implode()
没有任何分隔符。