新闻中心

如何使用php压缩HTML函数

作者 / 无忧主机 时间 2014-05-31 16:42:02

有站长朋友问无忧主机小编:如何提高网页加载速度?如何对html页面优化,相信是每个想提高建站技术的站长曾想的问题,其实网页优化的方法有很多种。下面小编就来给大家分享一下如何用php来压缩HTML。 采用php来压缩HTML 由于小编对php比较熟悉,所以使用php来压缩HTML, 小编压缩html的功能用php写成一个函数 ,其实大家百度这样的php压缩函数有很多,但很多都不是很好用,特别是在压缩js或压缩CSS 的时候,主要原因就是一些压缩注释等方面不同导致的问题。函数如下: /** * 压缩html : 清除换行符,清除制表符,去掉注释标记 * @param $string * @return压缩后的$string * */ function compress_html($string){ $string=str_replace("\r\n",'',$string);//清除换行符 $string=str_replace("\n",'',$string);//清除换行符 $string=str_replace("\t",'',$string);//清除制表符 $pattern=array( "/> *([^ ]*) *</",//去掉注释标记 "/[\s]+/", "/<!--[^!]*-->/", "/\" /", "/ \"/", "'/\*[^*]*\*/'" ); $replace=array ( ">\\1<", " ", "", "\"", "\"", "" ); return preg_replace($pattern, $replace, $string); } php来压缩HTML注意事项 php来压缩HTML实现的方式主要是用正则表达式去查找和替换。在html压缩的时候,小编提醒大家主要注意下面几点: 1.HTML 文档中,多个空白字符等价为一个空白字符。也就是说换行等空白字符是不能删除的,有可能造成部分元素的样式产生差异。 2.html中有一个pre, 表示 preformatted text. 里面的任何空白,都不能删除,所以pre,textarea 标签里面的内容格式必须保留,不能压缩。 3.HTML中可能有IE条件注释。这些条件注释是文档逻辑中的的一部分,不能删除。因此去掉html注释的时候,有些注释是不能去掉的。 4.压缩嵌入式js中的注释要注意,因为注释符号可能会出现在字符串当中,比如: var url = "http://www.51php.com"; // 前面的//不是注释 5.对于动态页面来说,HTML 的压缩有可能还会增加服务器的 CPU 负担,得不偿失 由于注释对代码有作用,小编使用的php压缩html函数代码 没有去掉注释,直接上代码。 function higrid_compress_html($higrid_uncompress_html_source ) { $chunks = preg_split( '/(<pre.*?\/pre>)/ms', $higrid_uncompress_html_source, -1, PREG_SPLIT_DELIM_CAPTURE ); $higrid_uncompress_html_source = '';//[higrid.net]修改压缩html : 清除换行符,清除制表符,去掉注释标记 foreach ( $chunks as $c ) { if ( strpos( $c, '<pre' ) !== 0 ) { //[higrid.net] remove new lines & tabs $c = preg_replace( '/[\\n\\r\\t]+/', ' ', $c ); // [higrid.net] remove extra whitespace $c = preg_replace( '/\\s{2,}/', ' ', $c ); // [higrid.net] remove inter-tag whitespace $c = preg_replace( '/>\\s</', '><', $c ); // [higrid.net] remove CSS & JS comments $c = preg_replace( '/\\/\\*.*?\\*\\//i', '', $c ); } $higrid_uncompress_html_source .= $c; } return $higrid_uncompress_html_source; } 有些站长朋友不推荐压缩html ,主要原因除了上面所说的 php来压缩HTML注意事项外,通过 gzip 压缩已经能达到很好的效果。另外,因为产生影响HTML的因素太多,例如静态、动态、前端动态等,也没什么量化指标,所以很难控制压缩成什么样。代码更需要考虑执行效率,而不是传输效率。对于动态页面来说,HTML的压缩很有可能还会增加服务器的CPU负担,消耗服务器资源得不偿失。  

本文地址:https://www.51php.com/others/14357.html

1
1
1
1
1
1
1