php压缩html代码并输出

第一步,对php做下面的设置:

php.ini:

output_buffering = Off

output_handler = ob_gzhandler

zlib.output_compression = Off

zlib.output_compression_level = -1

第二步,apache增加如下设置:

AddOutputFilter DEFLATE html php js css

这样就可以对html php js css开启gzip压缩了。如果你使用的是CPENAL面板,默认是开启GZIP压缩的,上面的过程可以略过。

第三步,写一个php压缩html并输出到客户端的函数:

function compress_html($string) {

  return ltrim(rtrim(preg_replace(array("/> *([^ ]*) *</","//","'/\*[^*]*\*/'","/\r\n/","/\n/","/\t/",'/>[ ]+</'),
         array(">\\1<",'','','','','','><'),$string)));

}

上面的这个正则表达式,很强大的哦,经测试可用。

通过以上方法,你就可以将你的html代码压缩然后输出给客户端了。不信你可以查看源代码,就是一行,网页瞬间压缩很小。

拓展:

这里有两种压缩html代码的方式。
第一种:只压缩html代码,不压缩js,jq中的空行,换行等。

$str = preg_replace("~>\s+<~", "><",preg_replace("~>\s+\r\n~", ">", $str));

压缩之后的结果显示,除了js,jq的代码除外,其他的代码都是一行。
第二种:只要是页内的代码全部的压缩,包括js、jq。

$str = ltrim(rtrim(preg_replace(array("/> *([^ ]*) *</","//","'/\*[^*]*\*/'","/\r\n/","/\n/","/\t/",'/>[ ]+</'),array(">\\1<",'','','','','','><'),$str)));

压缩之后的结果就是一行,不管js、jq。

这里要是页面中的js、jq都已经抽出去之后,可以使用第二种方式,这样压缩的更加的彻底。要是页面中的js、jq没有抽取干净的话,我建议还是采用第一种方式只压缩网页中除了js、jq以外的html元素。

THE END
分享
二维码
< <上一篇
下一篇>>