PHP实现过滤各种HTML标签


Posted in PHP onMay 17, 2015

首先分享一些比较常见的

$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[]=" ";
$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开发不能违背的安全规则 过滤用户输入
May 01 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
php实现天干地支计算器示例
Mar 14 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 #PHP
php 批量查询搜狗sogou代码分享
May 17 #PHP
PHP解密Unicode及Escape加密字符串
May 17 #PHP
PHP实现远程下载文件到本地
May 17 #PHP
PHP生成json和xml类型接口数据格式
May 17 #PHP
php实现文本数据导入SQL SERVER
May 17 #PHP
php中PDO方式实现数据库的增删改查
May 17 #PHP
You might like
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
原生javascript兼容性测试实例
2013/07/01 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
Python 实现try重新执行
2019/12/21 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
意大利网上药房:Farmacia 33
2020/01/27 全球购物
委托书范本
2014/09/13 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
会计简历自我评价
2015/03/10 职场文书
学生病假条范文
2015/08/17 职场文书
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫