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);
}
以上三种方法均可以实现,不过各有优劣,小伙伴们根据自己的项目需求来选择吧。