PHP 接受提交变量过滤类
Filter.class.php :
1 <?php
2 class Filter{
3
4 /**
5 * 将\n转化为<br/>
6 *
7 * @param string $string 待转换的字符串
8 * @return string
9 */
10 static public function nl2br($string){
11 return nl2br($string);
12 }
13
14 /**
15 * 将<br/>转化为\n
16 *
17 * @param string $string 待转换的字符串
18 * @return string
19 */
20 static public function br2nl($string){
21 $array = array('<br>', '<br/>');
22 return str_replace($array, "\n", $string);
23 }
24
25 /**
26 * 多个连续空格只保留一个
27 * @param $string 待转换的字符串
28 * @return mixed
29 */
30 static public function mergeSpaces($string){
31 return preg_replace("/\s(?=\s)/","\\1", $string);
32 }
33
34 /**
35 * 过滤字符串中开头和结尾的特定字符
36 * @param string $string 待转换的字符串
37 * @param string $char_list 要转换的特定字符列表
38 * @return string
39 */
40 static public function trim($string, $char_list='\\\\s'){
41
42 $chars = preg_replace(
43 array( '/[\^\-\]\\\]/S', '/\\\{4}/S', '/\//'),
44 array( '\\\\\\0', '\\', '\/' ),
45 $char_list);
46 $pattern = '^[' . $chars . ']*|[' . $chars . ']*';
47
48 return preg_replace("/$pattern/sSD", '', $string);
49 }
50
51 /**
52 * 过滤特殊字符
53 *
54 * @param string $string 待转换的字符串
55 * @return string
56 */
57 static public function filterSpecial($string)
58 {
59 $search = array (
60 "'<script[^>]*?>.*?</script>'si", // 去掉 javascript
61 "'([\r\n\s])'", // 去掉空白字符
62 "'(\')'" // 替换英文'为中文’
63 );
64
65 $replace = array ("","","’",);
66
67 return preg_replace ($search, $replace, $string);
68 }
69
70 /**
71 * 过滤HTML标记
72 *
73 * @param string $string 需过滤内容
74 * @return string
75 */
76 static public function filterHtml($string)
77 {
78 $search = array (
79 "'<script[^>]*?>.*?</script>'si", // 去掉 javascript
80 "'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记
81 "'([\r\n\s])'" , // 去掉空白字符
82 "'(\')'" // 替换英文'为中文’
83 );
84
85 $replace = array ("","","","’");
86
87 return preg_replace ($search, $replace, $string);
88 }
89
90 /**
91 * 过滤字符串
92 * @param string $string 待转换的字符串
93 * @return string
94 */
95 static public function filterString($string)
96 {
97
98 $search = array (
99 "'<script[^>]*?>.*?</script>'si",
100 "'<[\/\!]*?[^<>]*?>'si",
101 "'[\r\n]|[\s]+'",
102 "'&(lt|#60);'i",
103 "'\''",
104 "'&(gt|#62);'i",
105 "'[<]|[>]'",
106 "'delete'i",
107 "'update'i",
108 "'sele'i",
109 "'insert'i",
110 "'into'i",
111 "'where'i",
112 "'set'i",
113 "'from'i",
114 "'script'i",
115 "'value'i",
116 "'exe'i",
117 "'localgroup'i",
118 "'chr'i",
119 "'truncate'i",
120 "'sysobjects'i",
121 "'syscolumns'i",
122 "'master'i",
123 "'/add'i",
124 "'cmdshell'i",
125 "'drop'i",
126 "'\\\'");
127
128 $replace = array("");
129
130 return preg_replace($search, $replace,$string);
131 }
132
133 static public function filterContent($string)
134 {
135 $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript
136 "'\''",
137 "'&(lt|#60);'i",
138 "'&(gt|#62);'i",
139 "'delete'i",
140 "'update'i",
141 "'into'i",
142 "'where'i",
143 "'set'i",
144 "'sele'i",
145 "'insert'i",
146 "'from'i",
147 "'value'i",
148 "'exe'i",
149 "'localgroup'i",
150 "'chr'i",
151 "'truncate'i",
152 "'sysobjects'i",
153 "'syscolumns'i",
154 "'master'i",
155 "'/add'i",
156 "'cmdshell'i",
157 "'drop'i",
158 "'\\\'");
159
160 $replace = array ("");
161
162 return preg_replace($search, $replace, $string);
163 }
164
165 static public function filterEditor($string){
166
167 $search = array (
168 "'<[\/\!]*?span[^<>]*?>'si", // 去掉 span
169 "'<[\/\!]*?div[^<>]*?>'si", // 去掉 div
170 );
171
172 $replace = array ("");
173
174 return preg_replace($search, $replace, $string);
175 }
176 }
177 ?>
//php 页面调用
pc_base::load_app_class('Filter','user');
$wxid = !empty($_REQUEST['wxid']) ? Filter::filterString($_REQUEST['wxid']) : '';
PHP 接受提交变量过滤类的更多相关文章
- php安全过滤类
/*ansic码-Url码表: http://www.w3school.com.cn/tags/html_ref_urlencode.html ---------------------------- ...
- dll的概念 dll导出变量 函数 类
1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接 ...
- C++空类以及没有成员变量的类的大小
关于C++中空类的大小为1,我们大家都有所了解,但是除了空类之外的其他一些没有成员变量的类的大小,还是有很多不明之处的. 我们来看如下一个例子: #include<iostream> us ...
- java类中根据已有的变量复写类的toString方法
java类中根据已有的变量复写类的toString方法: 在该类中定义好变量之后,shift+alt+s,从出现的列表中点击gemerate toString,就会自动生成对应的toString方法.
- 某游戏研究之字符过滤类-WorldFilter
所谓字符过滤器,常常用在聊天的内容,比如一连串的骂人难听的话,我们要屏蔽掉,避免造成不好的东西! 当然我作为中华天朝一个有文明有素质的人,肯定偶尔会做这样的事情啦,特别是打LOL的时候,算了不讲了,都 ...
- 输入值/表单提交参数过滤有效防止sql注入的方法
输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: 代码如下: /** * 过滤sql与php文件操作的关键字 * @param string $string * @return strin ...
- C++ static静态成员变量在类中仅仅是声明
今天写代码时看到: 图1的3个静态成员变量在类中仅仅是声明,没有定义以及分配内存:必须在类外,图中就是cpp中,定义分配内存,才能使用
- go变量、类的概念以及类的使用方式,嵌套结构体
go变量.类的概念以及类的使用方式,嵌套结构体 Go变量 go使用var声明变量,当声明变量时,这个变量对应的值总是会被初始化.这个值要么用指定的值初始化,要么用零值(即变 量类型的默认值)做初始化. ...
- 直接使用提交过来的类来更新字段EntityState.Modified并过滤null值的方法
public T Update<T>(T entity) where T : ModelBase { var set = this.Set<T>(); set.Attach(e ...
随机推荐
- Hadoop - 彻底解决警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
目录 1 - 在日志配置文件中忽略警告 - 有效 2 - 指定本地库的路径 - 无效 3 - 不使用 Hadoop 本地库 - 无效 4 - 替换 Hadoop 本地库 - 有效 5 - 根据源码,编 ...
- 北京某大公司:SpringBean生命周期
<对线面试官>系列目前已经连载25篇啦!有深度风趣的系列! [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 & ...
- ES6 学习笔记之对象的拓展
1.属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样书写更加简洁. const foo = 'bar'; const baz = {foo}; baz //{foo: &q ...
- Dagger2入门,以初学者角度
2016-12-21 更新:添加@Subcomponent注解以及Lazy与Provider的使用,本文基本完结!如果有好的建议请提出,感谢大家的支持,谢谢 依赖注入 Dagger2是Android中 ...
- ROS2学习之旅(1)——初识ROS2
本系列用来记录ROS2的学习过程,有错误或者不合理的地方请大家指正.由于博主具有ROS1的学习经历,会添加一些与ROS1的一些对比,当然这对于ROS2本身的学习内容没有丝毫影响,欢迎大家积极与我在评论 ...
- jvm代码热替换过程中异常
BTrace java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 具体如下: 1. 信这个问题很多小伙伴已经遇到了,这是在你的jd ...
- sort,wc,uniq 排序与统计命令
sort命令 语法:sort [parameter] [file or stdin]参数: -f:忽略大小写的差异,例如A和a视为编码相同 -b:忽略最前面的空格符部分 -n:使用"纯数字& ...
- Python单元测试框架unittest之断言(assert)
unittest中断言主要有三种类型: 1.基本的布尔断言,即:要么正确,要么错误的验证 2.比较断言,如比较两个变量的值(跟上面的布尔断言区别不大,主要是通过比较两个变量的值得出布尔值) 3.复杂断 ...
- C语言:最小公倍数
//求最小公倍数 #include <stdio.h> main() { int m,n,i,k,max,min; scanf("%d,%d",&m,& ...
- 从sql2008导入表结构及数据到mysql
打开navicat for mysql连接mysqlcreate database lianxi刷新,双击lianxi,双击"表"点击右边的"导入向导"选择&q ...