ThinkPHP去掉html中的空格和换行的方法(转:http://www.111cn.net/phper/thinkPhp/91462.htm)

在thinkphp3.2.2中,出现这样一个问题:无法删除模板中的空格和换行,我们现在就来分享这个问题的解决方法,然后再补充其他的php清除空白行和换行的实例。

在thinkphp3.2.2中有无法删除模板中的空格和换行的问题:

即使配置了 ‘TMPL_STRIP_SPACE‘ => true 也是不起效的。

原因:在ThinkPHP\Library\Think\Template.class.php 文件,compiler方法少了以下的一段代码导致的:

if(C(‘TMPL_STRIP_SPACE‘)) {
/* 去除html空格与换行 */
    $find = array(‘~>\s+<~‘,‘~>(\s+\n|\r)~‘);
    $replace = array(‘><‘,‘>‘);
    $tmplContent = preg_replace($find, $replace, $tmplContent);
}

最终的代码是这样的. (如果不会改就直接复制下面的代码替换你的代码吧!)

protected function compiler($tmplContent) {
    //模板解析
    $tmplContent =  $this->parse($tmplContent);
    // 还原被替换的Literal标签
    $tmplContent =  preg_replace_callback(‘/<!--###literal(\d+)###-->/is‘, array($this, ‘restoreLiteral‘), $tmplContent);
    // 添加安全代码
    $tmplContent =  ‘<?php if (!defined(\‘THINK_PATH\‘)) exit();?>‘.$tmplContent;
    if(C(‘TMPL_STRIP_SPACE‘)) {
        /* 去除html空格与换行 */
        $find           = array("~>\s+<~","~>(\s+\n|\r)~");
        $replace        = array(‘><‘,‘>‘);
        $tmplContent    = preg_replace($find, $replace, $tmplContent);
    }
    // 优化生成的php代码
    $tmplContent = str_replace(‘?><?php‘,‘‘,$tmplContent);
    // 模版编译过滤标签
    Hook::listen(‘template_filter‘,$tmplContent);
    return strip_whitespace($tmplContent);
}

php清除html,php去除空格与换行,php清除空白行和换行,提取页面纯文本

实用的php清除html,换行,空格类,php去除空格与换行,php清除空白行和换行,提取页面纯文本内容

方法一:

function DeleteHtml($str)
{
$str = trim($str); //清除字符串两边的空格
$str = preg_replace("/\t/","",$str); //使用正则表达式替换内容,如:空格,换行,并将替换为空。
$str = preg_replace("/\r\n/","",$str);
$str = preg_replace("/\r/","",$str);
$str = preg_replace("/\n/","",$str);
$str = preg_replace("/ /","",$str);
$str = preg_replace("/  /","",$str);  //匹配html中的空格
return trim($str); //返回字符串
}

调用方法

DeleteHtml($str);   $str 为需要清除的页面字符串

方法二:

strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签。
strip_tags() 函数官方介绍: http://www.php.net/manual/zh/function.strip-tags.php

class delhtml{
public function DeleteHtml($str)
{
$str = trim($str); //清除字符串两边的空格
$str = strip_tags($str,""); //利用php自带的函数清除html格式
$str = preg_replace("/\t/","",$str); //使用正则表达式替换内容,如:空格,换行,并将替换为空。
$str = preg_replace("/\r\n/","",$str);
$str = preg_replace("/\r/","",$str);
$str = preg_replace("/\n/","",$str);
$str = preg_replace("/ /","",$str);
$str = preg_replace("/  /","",$str);  //匹配html中的空格
return trim($str); //返回字符串
}
}

调用方法

$delhtml=new delhtml();
$doreplace=$delhtml->DeleteHtml($doreplace);//需要处理的页面字符串

方法三:

去除字符串内部的空行:

$str = preg_replace("/(s*?r?ns*?)+/","n",$str);

去除全部的空行,包括内部和头尾:

$str = preg_replace(‘/($s*$)|(^s*^)/m‘, ‘‘,$str);

总结:三种方式方法过滤清除页面中的换行及空白行、空白换行,都有相同的效果,大家看实际使用情况吧。

时间: 2024-07-28 22:29:44

ThinkPHP去掉html中的空格和换行的方法(转:http://www.111cn.net/phper/thinkPhp/91462.htm)的相关文章

使用dreamweaver去掉文本中的空格和换行

当我们从其他地方拷贝文本到网页,在html代码中会自动带有空格和换行,手动去掉很麻烦,今天试着用dreamweaver去了一下,方法如下: 1.点击Ctrl+F,打开“查找和替换”窗口 2‘见下图:

iOS去掉字符串中的空格,换行符号

去掉空格和换行符号的实质就是替换掉对应的字符 NSString* str=~~~~~~; //1. 去除掉首尾的空白字符和换行字符 str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; //2. 去除掉其它位置的空白字符和换行字符 str = [str stringByReplacingOccurrencesOfString:@"\r" withStr

去掉姓名中的空格

-- 1 去掉姓名中的空格 -- 本语句做二个动作:a,去掉换行:b,去掉空格 replace(replace(a.name,' ',''),' ','') as name

去掉字符串中的空格

1)Trim方法 string   tt=" aaa "; tt=tt.Trim()       去字符串首尾空格的函数 tt=tt.TrimEnd() 去掉字符串尾空格 tt=tt.TrimStart() 去掉字符串首空格 (2)通过ASCII码值去掉字符中的空格 由于空格的ASCII码值是32,因此,在去掉字符串中所有的空格时,只需循环访问字符串中的所有字符,并判断它们的ASCII码值是不是32即可.去掉字符串中所有空格的关键代码如下: CharEnumerator CEnumer

Sql Server 2005 去掉字段中的空格

SELECT replace(ltrim(rtrim(Realname)),' ','') AS Realname FROM UserInfo WHERE replace(ltrim(rtrim(Realname)),' ','') ='张飞' Sql Server 2005 去掉字段中的空格,布布扣,bubuko.com

搜索联系人是去掉拼音中的空格

在搜索联系人时,因为存储进数据库的字段中含有空格,造成在按拼音搜索联系人的时候也必须加入空格,很不方便,所以今天请教大神,在从解析数据的时候就将名字转为拼音,去掉空格,所以在解析时候使用如下代码红色标记的那段: - (void)syncContact { dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_sync(queue, ^{ NSUserDefa

java 去html标签,去除字符串中的空格,回车,换行符,制表符

public static String getonerow(String allLine,String myfind)     {                           Pattern pattern = Pattern.compile("<div class=\"row\">.*?</div>");                      Matcher  matcher = pattern.matcher(allLine

C++去掉字符串中首尾空格和所有空格

c++去掉首尾空格是参考一篇文章的,但是忘记文章出处了,就略过吧. 去掉首尾空格的代码如下: 1 void trim(string &s) 2 { 3 4 if( !s.empty() ) 5 { 6 s.erase(0,s.find_first_not_of(" ")); 7 s.erase(s.find_last_not_of(" ") + 1); 8 } 9 10 } 去掉首尾空格 去掉字符串中所有空格的代码如下: 1 void trim(string

SQL Server 去掉列中的空格

update 表名 set 字段名=Rtrim(Ltrim(字段名)) ltrim rtrim只能去掉左右两边的空格 可以用replace()替换一下,去掉所有的空格 寻找有换行符的: SELECT * FROM [表名] WITH(NOLOCK) where 列名like '%' 去除某列的换行符: update [表名] set  列名=replace 列名,'','')