PHP实现过滤各种HTML标签

   在做项目的过程中,我们经常需要用到过滤一些html标签来实现提高数据的安全性,其实就是删除那些对应用程序有潜在危害的数据。它用于去除标签以及删除或编码不需要的字符。

  首先分享一些比较常见的

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

$str=preg_replace("/<s*imgs+[^>]*?srcs*=s*('|")(.*?)1[^>]*?/?s*>/i","", $str); //过滤img标签
 
$str=preg_replace("/s+/","", $str); //过滤多余回车
 
$str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格)
 
$str=preg_replace("/<!--.*?-->/si","",$str); //注释
 
$str=preg_replace("/<(!.*?)>/si","",$str); //过滤DOCTYPE
 
$str=preg_replace("/<(/?html.*?)>/si","",$str); //过滤html标签
 
$str=preg_replace("/<(/?head.*?)>/si","",$str); //过滤head标签
 
$str=preg_replace("/<(/?meta.*?)>/si","",$str); //过滤meta标签
 
$str=preg_replace("/<(/?body.*?)>/si","",$str); //过滤body标签
 
$str=preg_replace("/<(/?link.*?)>/si","",$str); //过滤link标签
 
$str=preg_replace("/<(/?form.*?)>/si","",$str); //过滤form标签
 
$str=preg_replace("/cookie/si","COOKIE",$str); //过滤COOKIE标签
 
$str=preg_replace("/<(applet.*?)>(.*?)<(/applet.*?)>/si","",$str); //过滤applet标签
 
$str=preg_replace("/<(/?applet.*?)>/si","",$str); //过滤applet标签
 
$str=preg_replace("/<(style.*?)>(.*?)<(/style.*?)>/si","",$str); //过滤style标签
 
$str=preg_replace("/<(/?style.*?)>/si","",$str); //过滤style标签
 
$str=preg_replace("/<(title.*?)>(.*?)<(/title.*?)>/si","",$str); //过滤title标签
 
$str=preg_replace("/<(/?title.*?)>/si","",$str); //过滤title标签
 
$str=preg_replace("/<(object.*?)>(.*?)<(/object.*?)>/si","",$str); //过滤object标签
 
$str=preg_replace("/<(/?objec.*?)>/si","",$str); //过滤object标签
 
$str=preg_replace("/<(noframes.*?)>(.*?)<(/noframes.*?)>/si","",$str); //过滤noframes标签
 
$str=preg_replace("/<(/?noframes.*?)>/si","",$str); //过滤noframes标签
 
$str=preg_replace("/<(i?frame.*?)>(.*?)<(/i?frame.*?)>/si","",$str); //过滤frame标签
 
$str=preg_replace("/<(/?i?frame.*?)>/si","",$str); //过滤frame标签
 
$str=preg_replace("/<(script.*?)>(.*?)<(/script.*?)>/si","",$str); //过滤script标签
 
$str=preg_replace("/<(/?script.*?)>/si","",$str); //过滤script标签
 
$str=preg_replace("/javascript/si","Javascript",$str); //过滤script标签
 
$str=preg_replace("/vbscript/si","Vbscript",$str); //过滤script标签
 
$str=preg_replace("/on([a-z]+)s*=/si","On1=",$str); //过滤script标签
 
$str=preg_replace("/&#/si","&#",$str); //过滤script标签

  更简单些的写法:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

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;
}

  再来一个:

  ?

1
2
3
4
5
6

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)");
return preg_replace($search, $replace, $html);
}

  以上三种方法均可以实现,不过各有优劣,小伙伴们根据自己的项目需求来选择吧。

时间: 2024-07-30 21:40:56

PHP实现过滤各种HTML标签的相关文章

asp.net 过滤所有html标签正则表达式

asp教程.net 过滤所有html标签正则表达式 //下面提供二种asp.net教程 过滤所有html标签正则表达式,都是过滤所有html代码,用的是replace替换. regex reg = new regex(@"(?is)<span[^>]*>(.*?)</span>"); matchcollection mc = reg.matches(""); foreach (match m in mc) {   str+= m.gro

php过滤所有html标签的几种方法

//用正则过滤html标签  代码如下 复制代码 $html_body ="<a href='#'>www.111cn.net</a>"; preg_replace("/(</?)(w+)([^>]*>)/e",              "'\1'.strtoupper('\2').'\3'",              $html_body);     //用php教程自带函数strip_tags  

用php过滤所有html标签属性

//1,过滤所有html标签的正则表达式: </?[^>]+> //2,过滤所有html标签的属性的正则表达式: $html = preg_replace("/<([a-zA-Z]+)[^>]*>/","<\1>",$html); //3,过滤部分html标签的正则表达式的排除式(比如排除<p>,即不过滤<p>): </?[^pP/>]+> //4,过滤部分html标签的正则表

ASP.NET过滤所有HTML标签几种方法

asp教程.net过滤所有html标签几种方法 public static string nohtml(string htmlstring)  {  //删除脚本              htmlstring = regex.replace(htmlstring, @"<script[^>]*?>.*?</script>", "",                regexoptions.ignorecase);           

php利用正则过滤链接、标签,空格,换行符程序

strip_tags函数 strip_tags --- 去除字串中的HTML和PHP标签 语法 : string strip_tags (string str [, string allowable_tags]) 例  代码如下 复制代码 <?php $text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; e

PHP实现过滤各种HTML标签_php技巧

首先分享一些比较常见的 $str=preg_replace("/<s*imgs+[^>]*?srcs*=s*('|")(.*?)\1[^>]*?/?s*>/i","", $str); //过滤img标签 $str=preg_replace("/s+/","", $str); //过滤多余回车 $str=preg_replace("/<[ ]+/si","&l

php 过滤所有html标签

首先我们推荐filter_sanitize_string ,filter_sanitize_string 过滤器去除或编码不需要的字符. 这个过滤器删除那些对应用程序有潜在危害的数据.它用于去除标签以及删除或编码不需要的字符. name: "string" id-number: 513 可能的选项或标志: filter_flag_no_encode_quotes - 该标志不编码引号 filter_flag_strip_low - 去除 ascii 值在 32 以下的字符 filter

正则表达式过滤html的标签对

   public string DealHtml(string str) { //str = Regex.Replace(str, @"<(img)[^>]*>|</(img)>", "", RegexOptions.IgnoreCase); str = Regex.Replace(str, @"<(table|tbody|tr|td|th)[^>]*>|</(table|tbody|tr|td|th

php过滤HTML标签、属性等正则表达式汇总_php实例

$str=preg_replace("/\s+/", " ", $str); //过滤多余回车 $str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格)   $str=preg_replace("/<\!--.*?-->/si","",$str); //注释 $str=p