PHP实现过滤各种HTML标签

 更新时间:2015年05月17日 16:33:11   投稿:hebedich  
在做项目的过程中,我们经常需要用到过滤一些html标签来实现提高数据的安全性,其实就是删除那些对应用程序有潜在危害的数据。它用于去除标签以及删除或编码不需要的字符。

首先分享一些比较常见的

$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","On\1=",$str); //过滤script标签

$str=preg_replace("/&#/si","&#",$str); //过滤script标签

更简单些的写法:

function delhtml($str){  //清除html标签
$st=-1; //开始
$et=-1; //结束
$stmp=array();
$stmp[]="&nbsp;";
$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;
}

再来一个:

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

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

相关文章

  • PHP 常见郁闷问题答解

    PHP 常见郁闷问题答解

    [绿色]PHP 常见郁闷问题答解...
    2006-11-11
  • php遍历类中包含的所有元素的方法

    php遍历类中包含的所有元素的方法

    这篇文章主要介绍了php遍历类中包含的所有元素的方法,涉及php中getConstants方法及数组操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • php中in_array函数用法分析

    php中in_array函数用法分析

    这篇文章主要介绍了php中in_array函数用法,以实例形式分析了PHP中in_array函数用法及相关的注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • 相对路径转化成绝对路径

    相对路径转化成绝对路径

    相对路径转化成绝对路径...
    2007-04-04
  • PHP封装的page分页类定义与用法完整示例

    PHP封装的page分页类定义与用法完整示例

    这篇文章主要介绍了PHP封装的page分页类定义与用法,结合完整实例形式分析了php封装的page分页类具体定义、数据库连接、查询、样式及调用等相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • PHP实现根据图片色界在不同位置加水印的方法

    PHP实现根据图片色界在不同位置加水印的方法

    这篇文章主要介绍了PHP实现根据图片色界在不同位置加水印的方法,涉及php使用MagickWand模块操作图片添加水印的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-08-08
  • apache和php之间协同工作的配置经验分享

    apache和php之间协同工作的配置经验分享

    闲暇之时也会对PHP知识做一些研究与大家共享,首先工欲善其事,必先利其器,可能比喻不是很恰当,php也需要一系列的环境配置,以下是我配置php的一些手稿,经测试已成功运行了
    2013-04-04
  • 基于PHP安装zip拓展,以及libzip安装的问题

    基于PHP安装zip拓展,以及libzip安装的问题

    下面小编就为大家分享一篇基于PHP安装zip拓展,以及libzip安装的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • PHP中使用foreach和引用导致程序BUG的问题介绍

    PHP中使用foreach和引用导致程序BUG的问题介绍

    PHP 引用有些类似 C 语言指针, 但一些重要的特性和 C 语言指针不一样, 如果不注意, 会导致程序 BUG. foreach 操作的是数组或对象的拷贝, 但 PHP5, 可以使用引用操作对象元素本身
    2012-09-09
  • php实现映射操作实例详解

    php实现映射操作实例详解

    这篇文章主要介绍了php实现映射操作,结合实例形式详细分析了PHP映射概念、原理及使用链表与二叉树实现映射的相关操作技巧,需要的朋友可以参考下
    2019-10-10

最新评论