thinkphp3.2 3.2中取消了配置文件中的 'TMPL_STRIP_SPACE' 属性,所以我们先来修改:\ThinkPHP\Library\Think\Template.class.php 文件

找到compiler方法:

  1. /**
  2. * 编译模板文件内容
  3. * @access protected
  4. * @param mixed $tmplContent 模板内容
  5. * @return string
  6. */
  7. protected function compiler($tmplContent) {
  8. //模板解析
  9. $tmplContent = $this->parse($tmplContent);
  10. // 还原被替换的Literal标签
  11. $tmplContent = preg_replace_callback('/<!--###literal(\d+)###-->/is', array($this, 'restoreLiteral'), $tmplContent);
  12. // 添加安全代码
  13. $tmplContent = '<?php if (!defined(\'THINK_PATH\')) exit();?>'.$tmplContent;
  14.  
  15. /* 去除html空格与换行 */
  16. if(C('TMPL_STRIP_SPACE')) {
  17. //方法一
  18. // $find = array('~>\s+<~','~>(\s+\n|\r)~');
  19. // $replace = array('><','>');
  20. // $tmplContent = preg_replace($find, $replace, $tmplContent);
  21. //方法二
  22. // $tmplContent = trim($tmplContent); //清除字符串两边的空格
  23. // $tmplContent = preg_replace("/\t/","",$tmplContent);
  24. // $tmplContent = preg_replace("/\r\n/","",$tmplContent);
  25. // $tmplContent = preg_replace("/\r/","",$tmplContent);
  26. // $tmplContent = preg_replace("/\n/","",$tmplContent);
  27. // $tmplContent = preg_replace("/ /","",$tmplContent); //匹配html中的空格 制表符
  28. //方法三
  29. $tmplContent = $this->compress_html($tmplContent);
  30. }
  31.  
  32. // 优化生成的php代码
  33. $tmplContent = str_replace('?><?php','',$tmplContent);
  34. // 模版编译过滤标签
  35. Hook::listen('template_filter',$tmplContent);
  36. return strip_whitespace($tmplContent);
  37. }

如上所示,添加 if条件 使配置文件支持该属性。

  1. if(C('TMPL_STRIP_SPACE'))

配置文件中就可以使用:

  1. 'TMPL_STRIP_SPACE' => true, // 是否去除模板文件里面的html空格与换行

开启压缩了。

=====================================================================================

上面的代码展示了三种压缩方法,方法三使用了自定义的方法:

  1. /**
  2. * 压缩html : 清除换行符,清除制表符,去掉注释标记
  3. * @param $string
  4. * @return压缩后的$string
  5. * */
  6. public function compress_html($string){
  7. $string=str_replace("\r\n",'',$string);//清除换行符
  8. $string=str_replace("\n",'',$string);//清除换行符
  9. $string=str_replace("\t",'',$string);//清除制表符
  10. $pattern=array(
  11. "/> *([^ ]*) *</",//去掉注释标记
  12. "/[\s]+/",
  13. "/<!--[^!]*-->/",
  14. "/\" /",
  15. "/ \"/",
  16. "'/\*[^*]*\*/'"
  17. );
  18. $replace=array (
  19. ">\\1<",
  20. " ",
  21. "",
  22. "\"",
  23. "\"",
  24. ""
  25. );
  26. return preg_replace($pattern, $replace, $string);
  27. }

另一种方法:

  1. function higrid_compress_html($higrid_uncompress_html_source )
  2. {
  3. $chunks = preg_split( '/(<pre.*?\/pre>)/ms', $higrid_uncompress_html_source, -1, PREG_SPLIT_DELIM_CAPTURE );
  4. $higrid_uncompress_html_source = '';//[higrid.net]修改压缩html : 清除换行符,清除制表符,去掉注释标记
  5. foreach ( $chunks as $c )
  6. {
  7. if ( strpos( $c, '<pre' ) !== 0 )
  8. {
  9. //remove new lines & tabs
  10. $c = preg_replace( '/[\\n\\r\\t]+/', ' ', $c );
  11. //remove extra whitespace
  12. $c = preg_replace( '/\\s{2,}/', ' ', $c );
  13. //remove inter-tag whitespace
  14. $c = preg_replace( '/>\\s</', '><', $c );
  15. //remove CSS & JS comments
  16. $c = preg_replace( '/\\/\\*.*?\\*\\//i', '', $c );
  17. }
  18. $higrid_uncompress_html_source .= $c;
  19. }
  20. return $higrid_uncompress_html_source;
  21. }

php压缩html函数代码总结

有些童鞋不 推荐压缩html , 主要原因除了上面所说的 php来压缩HTML注意事项 外,通过 gzip 压缩已经能达到很好的效果。另外,因为产生影响HTML的角色太多(静态,动态,前端动态),也没什么量化指标,所以很难控制压缩成什么样(代码写成什么程度)。代码更需要考虑执行效率,而不是传输效率。对于动态页面来说,HTML 的压缩有可能还会增加服务器的 CPU 负担,得不偿失。Google的压缩网页 是因为早期他希望首页文本尽可能控制在一个或两个包内,而且他的首页太重要了,流量也很离谱。压缩一个字节,总流量一算都是个不小的数字,自然也就是必要之举了。进一步的压缩存在问题,除非能像 Google 一样充分测试(Google 也仅压缩了少部分核心服务的页面),否则不推荐对 HTML 进行压缩处理。

=========================================

查看效果:

故事234:www.story234.com

荆州古城:www.jzeye.com

提示:如果页面使用了如下的代码

  1. <volist name="jzgs" id="v" key="k" offset="10" length='3' >
  2. <li {$k==1?"style='margin-left:0'":""} ><a href="/{$v.mode.url}/{$v.id}.html" title="{$v.title}"><img src="{$v.img}" width=120 height=120 alt="{$v.title}"/><span>{$v.title}</span></a></li>
  3. </volist>

三元运算符:

  1. <li {$k==1?"style='margin-left:0'":""} >
  2.  
  3. 方法一、方法二、压缩以后可能会产生错误 <listyle....

THINKPHP 清除HTML注释、换行符、空格、制表符等的更多相关文章

  1. 换行符javajava去除字符串中的空格、回车、换行符、制表符

    在改章节中,我们主要介绍换行符java的内容,自我感觉有个不错的建议和大家分享下     每日一道理 只有启程,才会到达理想和目的地,只有拼搏,才会获得辉煌的成功,只有播种,才会有收获.只有追求,才会 ...

  2. 【Python-2.7】换行符和制表符

    在Python中换行符“\n”表示接下来的内容将会换到下一行显示,制表符“\t”表示下面的内容显示时在前面留出空白,如打印如下内容: Dear: I love you forever! 上面的一段话分 ...

  3. java去除字符串中的空格、回车、换行符、制表符

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author chzeze * 2016-11-07 */ ...

  4. 换行符java去除字符串中的空格、回车、换行符、制表符

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author lei * 2011-9-2 */ publ ...

  5. c#去除字符串中的空格,回车,换行符,制表符

    string l_strResult = str.Replace("\n", "").Replace(" ","").R ...

  6. Java字符代码中干掉制表符、回车符和换行符

    Java字符代码中干掉制表符.回车符和换行符 代码片段: String sql = StringUtils.trim(sql).replaceAll("[\\r\\n\\t]",& ...

  7. C#中关于换行符的记录

    最近在做一个练习的时候,从其他数据库提出来数据装到自己的数据表中,发现同是编辑器的内容却在页面上显示不出来,但是在数据库中又确实存在,经过一番折腾之后发现是 换行符 的问题.在我的编辑器中是以 ‘\r ...

  8. PHP压缩html网页代码原理(清除空格,换行符,制表符,注释标记)

    本博启用了一个叫wp super cache的页面压缩工具, 源代码没有去查看,不过原理很简单. 我们可以自己动手书写一个压缩脚本. 清除换行符,清除制表符,去掉注释标记 .它所起到的作用不可小视. ...

  9. (转载)SQL去除回车符,换行符,空格和水平制表符

    http://www.cnblogs.com/insus/p/4815336.html MS SQL去除回车符,换行符,空格和水平制表符,参考下面语句,一般情况是SQL接受富文本或是textarea的 ...

随机推荐

  1. A+B问题 涉及EOF

    输入将包括一系列对的整数a和b,通过一空间,一对每行整数分离的.  产量 对于每对输入的整数a和b你应该输出的a和b的总和在一行,并用输出的一个行中输入每一行.  样本输入 1 5  2 3  样本输 ...

  2. Linux下SVN服务器安装配置及客户端安装说明

    原文地址:http://wenku.baidu.com/link?url=h3dVAMx4azpOXEND5HQEE6nliE8-zc0GSQ03yv4cUs1vXMALXF64UsK7kT7kXm_ ...

  3. [ActionScript 3.0] AS3调用百度天气预报查询API

    接口说明 根据经纬度/城市名查询天气的结果 接口示例 http://api.map.baidu.com/telematics/v3/weather?location=成都&output=jso ...

  4. JAVA中集合类的使用

    总的说来常用的集合类有两大类:Collection 和 Map 1) Collection接口有List和Set两大类子接口,List有ArrayList.LinkedList.Vector子类,Se ...

  5. java -d64

    在 resin启动时指定java时加上了 -d64选项 JAVA="/xx/java -d64" 选择 "-server"选项必须使用-d64 http://b ...

  6. 在delphi的exe文件中嵌入另外一个exe文件

    http://www.cnblogs.com/dabiao/archive/2009/11/28/delphi.html 1.创建rc文件.可以用任意文本编辑器来写.文件格式为:"资源名 资 ...

  7. Centos 7配置LAMP

    因为安装zabbix需要LAMP环境,特记录如下. LAMP指的Linux(操作系统).Apache HTTP 服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或P ...

  8. Codeforces 622F 「数学数论」「数学规律」

    题意: 给定n和k,求 1 ≤ n ≤ 109, 0 ≤ k ≤ 106 思路: 题目中给的提示是对于给定的k我们可以求出一个最高次为k+1的关于n的通项公式. 根据拉格郎日插值法,我们可以通过k+2 ...

  9. poj 1804 (nyoj 117)Brainman : 归并排序求逆序数

    点击打开链接 Brainman Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7810   Accepted: 4261 D ...

  10. SQL Server 2012 Enterprise Core Edition和SQL Server 2012 Enterprise Edition的区别

    core没有图形界面,只有power shell界面,给没有图形界面的windows用的.