PHP压缩html网页代码,清除空格,制表符,注释标记
利用PHP压缩html网页代码来减小页面体积,提高网页前端的加载速度也是一种非常不错的网页优化的方法 (PHP压缩html主要就是通过清除空格,换行符,制表符,注释标记等来减小页面的体积,从而减小页面的数据传输量)。
其实如果使用的是smarty模板开发的话,可以直接在模板中使用strip标签即可达到相同的目的。
前面用str_replace,是为了删除注释和多余的空格,需要用正则,但能不用正则就不用。这是后面为什么用preg_replace的原因。
<?php
/**
* 压缩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);
}
/**
* 压缩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);
}
这个函数有以下局限性。如果html代码中出现以下情况,可能会出现异常:
1.标签中出现2个或以上的空格,大家知道规范的写法是:<a_href=''>,但是有人就会写成:<a__href=''>,其中_表示空格,这种情况会导致异常错误;
2.除了标签以外存在一个空格,那么无法清除;
3.可能正文中存在必要的空格也被清除;
4.代码中如果存在javascript,并且有//存在,那么由于没有换行了,所以后面的js代码都被注释掉了,导致js出错或者不起作用;
5.其他未知异常。
赏
转载本站原创文章请注明:文章转自 挨踢路,链接: https://itlu.net/articles/1856.html
新鲜出炉教程,占位再看。
这个仅仅是前奏~~~因为早上看到一条评论,说可以加个压缩,我就加了一个压缩的。下午再发布下生成HTML的,昨天的版本是只有生成,没压缩的
最近正在学习html和css,弄完后在学习php和mysql。
折腾下还是挺有意思的~
哎呦,不小心翻到了七年前的文章