过滤html标签多种方法,PHP将HTML转换成文本一些方
分类:计算机网络

最常用的使用php函数strip_tags

将HTML转换为纯文本

 代码如下

方法一
<?php

 代码如下

有时候可能需要将HTML文本转换为纯文本。可以使用strip_tags()函数达到这个目的,该函数删除字符串中的所有HTML和PHP标记,只剩下文本实体。其形式为:

<?php
 /**
  * 压缩html : 清除换行符,清除制表符,去掉注释标记  
  * @param   $string  
  * @return  压缩后的$string 
  * */
 function compress_html($string) {  
     $string = str_replace("rn", '', $string); //清除换行符  
     $string = str_replace("n", '', $string); //清除换行符  
     $string = str_replace("t", '', $string); //清除制表符  
     $pattern = array (  
                     "/> *([^ ]*) *</", //去掉注释标记  
                     "/[s]+/",  
                     "/<!--[^!]*-->/",  
                     "/" /",  
                     "/ "/",  
                     "'/*[^*]**/'" 
                     );  
     $replace = array (  
                     ">1<",  
                     " ",  
                     "",  
                     """,  
                     """,  
                     "" 
                     );  
     return preg_replace($pattern, $replace, $string);  
 }

 代码如下

<?php
$mystr=<<<SATO
此处省略几十行HTML代码^_^
SATO;
$str=strip_tags($mystr);
//到这里就已经达到我的HTML转为TXT文本的目的了,哈哈,使用这个函数真方便
//下面是插件的一些切词等操作,这里就不多说了
?>

string strip_tags(string str[,string allowable_tags])

去除连续的空格和换行符

echo strip_tags("hello <b>world!</b>");

自定义函数

可选的参数allowable_tags指定在此过程中可以跳过的标记。下面的例子使用了strip_tags()删除字符串中的所以HTML标记:

 代码如下

strip_tags --- 去除字串中的html和php标签

 代码如下

 代码如下

<?php
$str="i   am    a     booknnnnnmoth";
//去除所有的空格和换行符
echo preg_replace("/[s]{2,}/","",$str).'<br>';
//去除多余的空格和换行符,只保留一个
echo preg_replace("/([s]{2,})/","1",$str);
?>

语法 : string strip_tags (string str [, string allowable_tags])

<?php
// $document 应包含一个 HTML 文档。
// 本例将去掉 HTML 标记,javascript 代码
// 和空白字符。还会将一些通用的
// HTML 实体转换成相应的文本。

$input = "Email example@example.com";
echo strip_tags($input);
?>

去除回车换行符

说明 :

$search = array ("'<script[^>]*?>.*?</script>'si",  // 去掉 javascript
                 "'<[/!]*?[^<>]*?>'si",           // 去掉 HTML 标记
                 "'([rn])[s]+'",                 // 去掉空白字符
                 "'&(quot|#34);'i",                 // 替换 HTML 实体
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(d+);'e");                    // 作为 PHP 代码运行

这回返回以下结果:
Email example@example.com
下面的例子删除<a>标记之外的所有标记:

preg_replace("'([rn])[s]+'", "", $content) //去除回车换行符

此函式试着从给予的字串中去除所有html和php标签,如果是不完整或是假的标签时则会有错误,它和fgetss( )使用相同的方法去除标签。

$replace = array ("",
                  "",
                  "1",
                  """,
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(1)");

$input = "This example
is yanshare!";
echo strip_tags($input, "");
?>

 代码如下

 

$text = preg_replace ($search, $replace, $document);
?>

返回结果如下:

<?php
// $document 应包含一个 HTML 文档。
// 本例将去掉 HTML 标记,javascript 代码
// 和空白字符。还会将一些通用的
// HTML 实体转换成相应的文本。

 代码如下

后来我从网上看到了一个使用PHP写的方法,使用这个方法也可以实现将HTML转为TXT文本,个人觉得也还蛮实用的,在这里分享一下,代码如下:

This example
is yanshare!

$search = array ("'<script[^>]*?>.*?</script>'si",  // 去掉 javascript
                 "'<[/!]*?[^<>]*?>'si",           // 去掉 HTML 标记
                 "'([rn])[s]+'",                 // 去掉空白字符
                 "'&(quot|#34);'i",                 // 替换 HTML 实体
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(d+);'e");                    // 作为 PHP 代码运行

$reg = '/(</?p>|<brs*/?>)|<.+?>/i';
    echo preg_replace($reg,'$1',$str);
?>

 代码如下

PHP版将html中的<br />换行符转换为文本框中的换行符:

$replace = array ("",
                  "",
                  "1",
                  """,
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(1)");

过滤方法二

function HtmlToText($str){
  $str=preg_replace("/<sty(.*)/style>|<scr(.*)/script>|<!--(.*)-->/isU","",$str);//去除CSS样式、JS脚本、HTML注释
  $alltext="";//用于保存TXT文本的变量
  $start=1;//用于检测<左、>右标签的控制开关
  for($i=0;$i<strlen($str);$i++){//遍历经过处理后的字符串中的每一个字符
    if(($start==0)&&($str[$i]==">")){//如果检测到>右标签,则使用$start=1;开启截取功能
      $start=1;
    }else if($start==1){//截取功能
      if($str[$i]=="<"){//如果字符是<左标签,则使用<font color='red'>|</font>替换
        $start=0;
        $alltext.="<font color='red'>|</font>";
      }else if(ord($str[$i])>31){//如果字符是ASCII大于31的有效字符,则将字符添加到$alltext变量中
        $alltext.=$str[$i];
      }
    }
}
//下方是去除空格和一些特殊字符的操作
$alltext = str_replace(" "," ",$alltext);
$alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext);
$alltext = preg_replace("/[ ]+/s"," ",$alltext);
return $alltext;
}

 代码如下

$text = preg_replace ($search, $replace, $document);
?>

 代码如下

使用上面这个方法也可以实现将简答的HTML代码转换为TXT文本。

function br2nl($text){
return preg_replace('/<br\\s*?\/??>/i','',$text);
}

function delhtml($str){   //清除html标签
$st=-1; //开始
$et=-1; //结束
$stmp=array();
$stmp[]=" ";
$len=strlen($str);
for($i=0;$i<$len;$i++){
   $ss=substr($str,$i,1);
   if(ord($ss)==60){ //ord("<")==60
    $st=$i;
   }
   if(ord($ss)==62){ //ord(">")==62
    $et=$i;
    if($st!=-1){
     $stmp[]=substr($str,$st,$et-$st+1);
    }
   }
}
$str=str_replace($stmp,"",$str);
return $str;
}

例3

或者:

过滤方法三

 代码如下

function br2nl($text){
$text=preg_replace('/<br\\s*?\/??>/i',chr(13),$text);
 return preg_replace('/ /i',' ',$text);
}

 代码如下

function html2text($str,$encode = 'GB2312')
{

 

function clear_html_label($html)
{
$search = array ("'<script[^>]*?>.*?</script>'si", "'<[/!]*?[^<>]*?>'si", "'([rn])[s]+'", "'&(quot|#34);'i", "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", "'&(nbsp|#160);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'&#(d+);'e");
$replace = array ("", "", "1", """, "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(1)");

  $str = preg_replace("/<style .*?</style>/is", "", $str);
  $str = preg_replace("/<script .*?</script>/is", "", $str);
  $str = preg_replace("/<br s*/?/>/i", "n", $str);
  $str = preg_replace("/</?p>/i", "nn", $str);
  $str = preg_replace("/</?td>/i", "n", $str);
  $str = preg_replace("/</?div>/i", "n", $str);
  $str = preg_replace("/</?blockquote>/i", "n", $str);
  $str = preg_replace("/</?li>/i", "n", $str);

 代码如下

return preg_replace($search, $replace, $html);
}

  $str = preg_replace("/ /i", " ", $str);
  $str = preg_replace("/ /i", " ", $str);

<?php
// $document 应包含一个 HTML 文档。

//实例应用

  $str = preg_replace("/&/i", "&", $str);
  $str = preg_replace("/&/i", "&", $str);

// 本例将去掉 HTML 标记,javascript 代码

$string ='aaa<br /> <script>fdsafsa';
echo clear_html_label($string);//aaa fdsafsa

  $str = preg_replace("/</i", "<", $str);
  $str = preg_replace("/</i", "<", $str);

// 和空白字符。还会将一些通用的

  $str = preg_replace("/“/i", '"', $str);
  $str = preg_replace("/&ldquo/i", '"', $str);

// HTML 实体转换成相应的文本。

     $str = preg_replace("/‘/i", "'", $str);
     $str = preg_replace("/&lsquo/i", "'", $str);

$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript
"'<[/!]*?[^<>]*?>'si", // 去掉 HTML 标记
"'([rn])[s]+'", // 去掉空白字符
"'&(quot|#34);'i", // 替换 HTML 实体
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(d+);'e"); // 作为 PHP 代码运行

     $str = preg_replace("/’/i", "'", $str);
     $str = preg_replace("/&rsquo/i", "'", $str);

$replace = array ("",
 "",
 "1",
 """,
 "&",
 "<",
 ">",
 " ",
chr(161),
chr(162),
chr(163),
chr(169),
 "chr(1)");

  $str = preg_replace("/>/i", ">", $str);
  $str = preg_replace("/>/i", ">", $str);

$text = preg_replace ($search, $replace, $document);
?>

  $str = preg_replace("/”/i", '"', $str);
  $str = preg_replace("/&rdquo/i", '"', $str);

<?php
$mystr=<<<SATO
此处省略几十行HTML代码^_^
SATO;
$str=strip_tags($mystr);
//到这里就已经达到我的HTML转为TXT文本的目的了,哈哈,使用这个函数真方便
//下面是插件的一些切词等操作,这里就不多说了
?>

  $str = strip_tags($str);
  $str = html_entity_decode($str, ENT_QUOTES, $encode);
  $str = preg_replace("/&#.*?;/i", "", $str);
    
  return $str;
}

后来我从网上看到了一个使用PHP写的方法,使用这个方法也可以实现将HTML转为TXT文本,个人觉得也还蛮实用的,在这里分享一下,代码如下:

 代码如下

function HtmlToText($str){
  $str=preg_replace("/<sty(.*)\/style>|<scr(.*)\/script>|<!--(.*)-->/isU","",$str);//去除CSS样式、JS脚本、HTML注释
  $alltext="";//用于保存TXT文本的变量
  $start=1;//用于检测<左、>右标签的控制开关
  for($i=0;$i<strlen($str);$i++){//遍历经过处理后的字符串中的每一个字符
    if(($start==0)&&($str[$i]==">")){//如果检测到>右标签,则使用$start=1;开启截取功能
      $start=1;
    }else if($start==1){//截取功能
      if($str[$i]=="<"){//如果字符是<左标签,则使用<font color='red'>|</font>替换
        $start=0;
        $alltext.="<font color='red'>|</font>";
      }else if(ord($str[$i])>31){//如果字符是ASCII大于31的有效字符,则将字符添加到$alltext变量中
        $alltext.=$str[$i];
      }
    }
}
//下方是去除空格和一些特殊字符的操作
$alltext = str_replace(" "," ",$alltext);
$alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext);
$alltext = preg_replace("/[ ]+/s"," ",$alltext);
return $alltext;
}

使用上面这个方法也可以实现将简答的HTML代码转换为TXT文本

本文由美高梅网址发布于计算机网络,转载请注明出处:过滤html标签多种方法,PHP将HTML转换成文本一些方

上一篇:js中实现文件的循环写入,实例教程 下一篇:快速入门,smarty生成批量生成html
猜你喜欢
热门排行
精彩图文