ThinkPHP去掉html中的空格和换行的方法

在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);

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索replace
, 优化
, 代码
, array
, this
配置
html 去掉换行空格、thinkphp 去掉空格、php 去掉空格和换行、java 去掉空格和换行、ios 去掉空格和换行,以便于您获取更多的相关知识。

时间: 2024-08-31 17:38:02

ThinkPHP去掉html中的空格和换行的方法的相关文章

C#如何去掉字符串中所有空格

由于空格的ASCII码值是32,因此,在去掉字符串中所有的空格时,只需循环访问字符串中的所有字符,并判断它们的ASCII码值是不是32即可.去掉字符串中所有空格的关键代码如下: private void button1_Click(object sender, EventArgs e) { textBox2.Text = textBox1.Text; CharEnumerator myenum = textBox1.Text.GetEnumerator(); while (myenum.Move

Js 去掉字符串中的空格(实现代码)_javascript技巧

1. 去掉字符串两端的空格 String.prototype.trim=function (){return this.replace(/(^/s*)|(/s*$)/g,'');} 2. 去掉字符串中所有的空格: String.prototype.sTrim = function (){return this.replace(//s/g, '');} 或者: var s = "asd ddd bbb sss";var reg = //s/g;var ss = s.replace(reg

php中替换字符串中的空格为逗号&#039;,&#039;的方法_php技巧

今天在网查到一篇介绍php中替换字符串中的空格为逗号','的文章,作个日记保存下来. 复制代码 代码如下: <pre name="code" class="php"><? php /* * 关键词中的空格替换为',' */ public function emptyreplace($str) { $str = str_replace(' ', ' ', $str); //替换全角空格为半角 $str = str_replace(' ', ' ',

java中替换去除字符串中的空格/回车/换行符/制表符

用String对象的方法replaceAll就可以了! replaceAll(String regex, String replacement)           使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串. 示例代码:  代码如下 复制代码 public class T3 { public static void main(String args[]) {  String str="aa bb cc";  System.out.prin

Java中去除字符串中所有空格的几种方法

JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 复制代码 代码如下: String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(str2); 3.或者replaceAll(" +&

JavaScript中去掉数组中的重复值的实现方法_javascript技巧

复制代码 代码如下: 题目:要求写一个函数,去掉给定数组中的重复值. 如: 传入数组 a = [0, 8, 5, 4, 78, 8, 90, 4, 'a', 'b', 'a']; 要求返回:[0,4,5,8,78,90,a,b] 对于这个题目,在面试之后也想了好多次,不过一直没能想出一个时间复杂度较低的方法.昨天下午在宿舍看<JavaScript语言精粹>看到一个书中的一段代码有所触发,于是在jsfiddle上测试了,成功.代码如下(完整版参见jsfiddle) 复制代码 代码如下: var

php-怎样往mysql数据库存空格和换行,求大神解释

问题描述 怎样往mysql数据库存空格和换行,求大神解释 提交表单给PHP处理,然后存到数据库,文章中的空格和换行怎么存到数据库.前台展示的时候,空格和换行都没有了! 解决方案 取出来的时候做一个替换 空格替换为 换行替换为<br /> 解决方案二: 正常存,前台获取的时候获取html,不要获取text,存到数据库里就可以了 解决方案三: 这个之前我也遇到过,解决办法是存到数据库里面的时候做一次转换,在从数据库里读取数据的时候再做一次转换,这个转换数据库有函数可以自己转,不知道你用的什么数据库

PowerShell中删除空格、点号、减号和换行方法代码实例

  这篇文章主要介绍了PowerShell中删除空格.点号.减号和换行方法代码实例,本文直接给出实例代码,需要的朋友可以参考下 代码如下: $text = ' ... Hello ...--- ' $text.Trim(" .-`t`n`r") 结果只显示:Hello

php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)_php技巧

复制代码 代码如下: <?php /* *读取文件内容至字符串中,同时去除换行.行首行尾空格. */ header("Content-type: text/html; charset=utf-8"); echo preg_replace('/((\s)*(\n)+(\s)*)/i',',',file_get_contents('./file.php'));//End_php //输出: aaaa,bbbb,cccc,dddd,eeee,ffff,gggg,hhhh,iiii,jj