今天无意中看到谷歌的网页输出的 html 代码竟然都被压缩成了一段代码了。感觉挺有趣的,理论上不知道这样是否能算的上是一种优化,但感觉这样做的话应该一定程度上减少了页面网络传输的体积。下面本人也分享一种利用 php 清除html代码中的空格,换行符,制表符,注释标记等以达到压缩输出 html 的目的。其实如果使用的是smarty模板开发的话,可以直接在模板中使用strip标签即可达到相同的目的。
/** *压缩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代码、去掉多余的空格、删除回车换行符等等。下面就写一个更霸气的方法来实现这个想法吧。思路如下:
function cleanHtml($str){ $str=trim($str); $str=strip_tags($str,""); $str=ereg_replace("\t","",$str); $str=ereg_replace("\r\n","",$str); $str=ereg_replace("\r","",$str); $str=ereg_replace("\n","",$str); $str=ereg_replace(" "," ",$str); return trim($str); }