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 和 MySQL 基础教程(一)
Oct 09 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
php 随机生成10位字符代码
Mar 26 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
PHP封装的多文件上传类实例与用法详解
Feb 07 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 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
URL Rewrite的设置方法
2007/01/02 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
常用的javascript设计模式
2017/01/11 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
Ruby如何定义一个类
2012/10/08 面试题
继电保护工岗位职责
2014/01/05 职场文书
三方合作协议书范本
2014/04/18 职场文书
电力培训学习心得体会
2016/01/11 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书