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排序之二维数组的按照字母排序实现代码
Aug 13 PHP
基于php-fpm的配置详解
Jun 03 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
php常用的url处理函数总结
Nov 19 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
apache和PHP如何整合在一起
Oct 12 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 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中的一个中文字符串截取函数
2007/02/14 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
python七夕浪漫表白源码
2019/04/05 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
给老婆的婚前保证书
2014/02/01 职场文书
市场部管理制度
2014/02/02 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android