PHP实现过滤各种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标签
更简单些的写法:
functiondelhtml($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; }
再来一个:
functionclear_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)"); returnpreg_replace($search,$replace,$html); }
以上三种方法均可以实现,不过各有优劣,小伙伴们根据自己的项目需求来选择吧。