时间:2021-07-01 10:21:17 帮助过:57人阅读
/**
* 压缩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来压缩HTM 实现的方式主要是用正则表达式去查找,替换。在html压缩的时候,主要要注意下面几点:
1.HTML 文档中,多个空白字符等价为一个空白字符。也就是说换行等空白字符的删除是不安全的,有可能导致部分元素的样式产生差异。
2.html中有一个pre, 表示 preformatted text. 里面的任何空白,都不能被删除,因此pre,textarea 标签里面的内容格式需要保留,不能压缩。
3.HTML 中有可能有 IE 条件注释。这些条件注释是文档逻辑的一部分,不能被删除。因此去掉html注释的时候,有些注释是不能去掉的,比如:
4.压缩嵌入式js中的注释要注意,因为可能注释符号会出现在字符串中,比如: var url = "http://www.higrid.net"; // 前面的//不是注释
5.对于动态页面来说,HTML 的压缩有可能还会增加服务器的 CPU 负担,得不偿失
higrid使用的php压缩html函数代码
由于注释对代码有作用,higrid使用的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;
}
php压缩html函数代码总结
有些童鞋不 推荐压缩html , 主要原因除了上面所说的 php来压缩HTML注意事项 外,通过 gzip 压缩已经能达到很好的效果。另外,因为产生影响HTML的角色太多(静态,动态,前端动态),也没什么量化指标,所以很难控制压缩成什么样(代码写成什么程度)。代码更需要考虑执行效率,而不是传输效率。对于动态页面来说,HTML 的压缩有可能还会增加服务器的 CPU 负担,得不偿失。Google的压缩网页 是因为早期他希望首页文本尽可能控制在一个或两个包内,而且他的首页太重要了,流量也很离谱。压缩一个字节,总流量一算都是个不小的数字,自然也就是必要之举了。进一步的压缩存在问题,除非能像 Google 一样充分测试(Google 也仅压缩了少部分核心服务的页面),否则不推荐对 HTML 进行压缩处理。
但使用higrid.net 的 php压缩html函数 代码,能很好的解决这个问题。好了,还不快试试。