- 浏览: 54903 次
- 性别:
- 来自: 广州
最新评论
正则表达式匹配html 过滤非法字符
匹配一个html标签,匹配table如下:
<table.*?>[ss]*</table>
或
<table.*?>[ss]*?</table>
以上两个表达式,一个加了"?"和一个却不加"?",那么这有什么区别呢?
我们知道"?"在正则表达式里是一个通配符:匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
在这里,通过测试,我们得出这样的结论:在不加"?"的情况下,在匹配下面一段内容的时候:
<table>这是第一个table</table>
我不是table里的内容
<table>这是第二个table</table>
我也不是table里的内容
<table>这是第三个table</table>
<?
$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("/网页特效/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标签,如javascript:alert('aabb)
?>
匹配一个html标签,匹配table如下:
<table.*?>[ss]*</table>
或
<table.*?>[ss]*?</table>
以上两个表达式,一个加了"?"和一个却不加"?",那么这有什么区别呢?
我们知道"?"在正则表达式里是一个通配符:匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
在这里,通过测试,我们得出这样的结论:在不加"?"的情况下,在匹配下面一段内容的时候:
<table>这是第一个table</table>
我不是table里的内容
<table>这是第二个table</table>
我也不是table里的内容
<table>这是第三个table</table>
<?
$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("/网页特效/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标签,如javascript:alert('aabb)
?>
发表评论
-
PHP中静态方法(static)与非静态方法的使用及区别
2012-07-27 11:21 1130static关键字用来修饰属性、方法,称这些属性、方法为静态属 ... -
PHP导出excel表格,PHP导出Excel报表,PHP导出Xls表格!
2011-10-19 14:19 2981php导出excel 2010/02/01 10:33 最近 ... -
iframe ie下设置无边框
2011-01-11 16:01 1701<iframe src="url“ id=&q ... -
php session_id() session_name()
2010-12-20 14:01 13801.Session.use_cookies:默认值 ... -
linux 下 apache启动、停止、重启命令
2010-12-17 20:00 981基本的操作方法: 本文假设你的apahce安装目录为/usr/ ... -
JavaScript escape() 函数
2010-12-10 17:03 1094JavaScript escape() 函数 定义和用法ht ... -
PHP中@符号的作用。
2010-12-07 16:12 986PHP代码中函数前面的@是什么意思? 【答】:@的作用是忽略 ... -
Ubuntu Linux下安装Zend Studio
2010-11-25 16:48 2123Ubuntu娱乐功能已经非常不错,无非是看看电影,听听歌 ... -
php ob_start 与 ob_end_flush()
2010-11-25 15:02 1526本文章主要讲关于php缓冲输出函数php ob_start 与 ... -
详解PHP ob_start()函数的功能要点
2010-11-25 15:00 1056PHP函数的运用范围非常 ... -
php函数ob_start()、ob_end_clean()、ob_get_contents()
2010-11-25 14:59 1113下面3个函数的用法 ob_get_contents(); o ... -
Memcache基础教程
2010-11-25 14:58 769Memcache是什么 Memcache是danga.com的 ... -
PEAR的MDB2学习笔记
2010-11-10 14:57 1368■ 安装 需要安装两个包,一是MDB2本身基础类:[url= ... -
使用jquery不刷新前台页面完成提交表单的例子
2010-11-10 11:01 5864使用jquery不刷新前台页面完成提交表单的例子。 前台文件 ... -
php链接mysql数据库不能用localhost的解决方法
2010-11-09 16:57 1701网上看了好多解决的方 ... -
Pear MDB2安装及MDB2 Error: not found问题
2010-11-09 11:31 18791、选安装PEAR,点击php目录下的go-pear.bat, ... -
php教程 DOM解析xml文档实例
2010-11-05 11:22 1129<?php // php教程 domdocumen ... -
PHP中的COOKIE和SESSION使用技巧
2010-11-03 16:15 13321. PHP的COOKIE cookie 是一种在远程浏览器 ... -
PHP获取当前文件路径,上层目录路径
2010-11-02 14:44 5329PHP获取当前文件路径,上层目录路径 取的現在檔案、目錄、上 ... -
linux的chmod与chown命令详解
2010-11-01 14:53 764使用方式 : chmod [-cfvR] [--help] [ ...
相关推荐
Java 正则表达式过滤特殊字符的正则表达式 Java 正则表达式是 Java 语言中的一种强大的文本处理工具,能够对字符串进行复杂的匹配、提取和替换操作。本文将详细介绍 Java 正则表达式在过滤特殊字符方面的应用。 ...
7. **.**:匹配点号,但在这里使用了转义字符(\),因为点号在正则表达式中是特殊字符,代表任意单个字符。 8. **[0-9]**:匹配任何单个数字,包括0。 整个表达式重复四次,每次后面跟着一个点号和下一个表达式,...
2. **安全性**:虽然该正则表达式能有效过滤非法字符,但在实际应用中还需结合其他安全措施来进一步增强系统的安全性。 3. **用户体验**:合理的错误提示信息能够帮助用户更好地理解输入要求,提升用户体验。 综上...
正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换等操作符合某种规则的字符串。在Java中,通过`java.util.regex`包提供了对正则表达式的支持。 ### 2. 邮箱地址验证 在实际应用中,经常需要...
例如,在实际项目中,可能需要过滤用户输入的非法字符,或者从大量文本数据中提取有用的信息,这些都可以借助正则表达式的强大功能来实现。 总结来说,Java 中的正则表达式是非常有用的工具,它可以帮助我们高效地...
后端开发中,正则表达式则常用于数据清洗、过滤非法请求以及数据提取等任务。不论是在前端还是后端,熟练掌握正则表达式都能极大地提高开发效率。 通过运行压缩包中的"工具_正则表达式测试.exe"文件,开发者可以...
在中文环境中,正则表达式的应用同样广泛,尤其是在处理中文文本时,如搜索关键词、过滤非法字符、提取特定格式的信息等。易语言(EasyLanguage)是一款面向普通用户的编程语言,它提供了易学易用的接口来实现正则...
本示例主要展示了如何使用PHP的正则表达式功能来过滤非法字符串,特别是针对留言板数据提交的情况,防止恶意用户输入可能破坏系统或者安全的数据。 首先,我们需要了解PHP中的`preg_replace`函数。`preg_replace`是...
- **提示信息**:在用户输入非法字符时显示提示信息。 - **输入反馈**:通过颜色变化等方式给予用户直观的反馈。 - **多语言支持**:如果应用面向全球用户,需要考虑其他语言的支持。 通过这种方式,我们可以有效地...
使用onkeyup和onbeforepaste事件监听器,结合正则表达式,可以实时过滤用户的输入,限制只能输入特定类型的字符,如仅允许中文、英文或数字,有效防止非法输入,提高数据安全性。 以上正则表达式及其应用,覆盖了从...
Java正则表达式是Java编程语言中用于处理文本模式匹配的强大工具,它遵循Perl风格的正则表达式语法。正则表达式可以用来验证、提取、替换或查找字符串中的特定模式,对于输入数据的验证和格式化尤其有用。以下是一些...
本文将对几个常见的正则表达式应用场景进行总结,包括中国电话号码验证、邮政编码验证、电子邮件验证、身份证验证、常用数字验证、非法字符验证以及日期验证等。 #### 二、知识点详解 ##### 2.1 中国电话号码验证 ...
- **后端**:后端开发者使用正则表达式处理和验证请求数据,过滤非法字符,防止SQL注入等安全问题,同时也用于日志分析、数据清洗等任务。 4. **推荐工具**: - **Regex101**:在线的正则表达式测试平台,支持...
4. URL路由:在路由配置中,使用正则表达式匹配不同类型的URL请求。 五、进阶技巧 1. 非贪婪匹配:在量词后加上`?`,如`.*?`,使匹配尽可能少的字符。 2. 条件匹配:`(?(条件)匹配表达式1|匹配表达式2)`,根据条件...
在IT领域,正则表达式是一种强大的文本处理工具,用于模式匹配、搜索和替换字符串中的特定字符或序列。本文将详细解析如何使用正则表达式来判断一个字符串中是否包含汉字,以及提供一个具体的示例代码,帮助读者理解...
1. **数据过滤**:在接收用户输入数据时,后端需要对数据进行清洗,去除非法字符或字符串,防止SQL注入等安全问题。 2. **路由匹配**:在RESTful API设计中,正则表达式用于匹配URL路径,实现动态路由。 3. **日志...
4. **过滤非法字符**:在输入框中防止用户输入某些非法字符,比如禁止用户输入除字母和数字之外的其他字符,可以用`\W`或`[^a-zA-Z0-9]`来实现。 通过以上介绍,我们可以看到正则表达式不仅能够帮助我们高效地进行...