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 接受提交变量过滤类的更多相关文章

  1. php安全过滤类

    /*ansic码-Url码表: http://www.w3school.com.cn/tags/html_ref_urlencode.html ---------------------------- ...

  2. dll的概念 dll导出变量 函数 类

    1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别:   (1)静态链接 ...

  3. C++空类以及没有成员变量的类的大小

    关于C++中空类的大小为1,我们大家都有所了解,但是除了空类之外的其他一些没有成员变量的类的大小,还是有很多不明之处的. 我们来看如下一个例子: #include<iostream> us ...

  4. java类中根据已有的变量复写类的toString方法

    java类中根据已有的变量复写类的toString方法: 在该类中定义好变量之后,shift+alt+s,从出现的列表中点击gemerate toString,就会自动生成对应的toString方法.

  5. 某游戏研究之字符过滤类-WorldFilter

    所谓字符过滤器,常常用在聊天的内容,比如一连串的骂人难听的话,我们要屏蔽掉,避免造成不好的东西! 当然我作为中华天朝一个有文明有素质的人,肯定偶尔会做这样的事情啦,特别是打LOL的时候,算了不讲了,都 ...

  6. 输入值/表单提交参数过滤有效防止sql注入的方法

    输入值/表单提交参数过滤,防止sql注入或非法攻击的方法:  代码如下: /** * 过滤sql与php文件操作的关键字 * @param string $string * @return strin ...

  7. C++ static静态成员变量在类中仅仅是声明

    今天写代码时看到: 图1的3个静态成员变量在类中仅仅是声明,没有定义以及分配内存:必须在类外,图中就是cpp中,定义分配内存,才能使用

  8. go变量、类的概念以及类的使用方式,嵌套结构体

    go变量.类的概念以及类的使用方式,嵌套结构体 Go变量 go使用var声明变量,当声明变量时,这个变量对应的值总是会被初始化.这个值要么用指定的值初始化,要么用零值(即变 量类型的默认值)做初始化. ...

  9. 直接使用提交过来的类来更新字段EntityState.Modified并过滤null值的方法

    public T Update<T>(T entity) where T : ModelBase { var set = this.Set<T>(); set.Attach(e ...

随机推荐

  1. 常用的16个Java实用工具类,Java开发人员请收藏!

    在Java中,实用程序类是一个定义一组执行常用功能的方法的类.这篇文章展示了最常用的Java实用程序类及其最常用的方法.类列表及其方法列表都按流行度排序.该数据基于GitHub随机选择的50,000个 ...

  2. 你能说出多线程中sleep、yield、join的用法及sleep与wait区别?

    Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...

  3. 【题解】poj 3254 Corn Fields

    题目描述 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的玉米,供 ...

  4. OpenResty高并发

    在电商项目中所有的访问都是通过首页访问进去的,那么首页门户的访问频率会是非常高的,用我们专业术语来说就是并发量高,这时问题就来了,并发量高我们在做程序时就要保证首页的抗压能力强,而且还要保证抗压的同时 ...

  5. 注解式项目开发!详细解析Java中各个注解的作用和使用方式

    @Target 作用: 指明了修饰的这个注解的使用范围, 即被描述的注解可以用在哪里 @Target(ElementType.Type) ElementType取值的类型: TYPE: 类,接口或者枚 ...

  6. Kubernetes将弃用docker?

    1.前言 近日,Kubernetes 官方发布公告,宣布自 v1.20 起放弃对 Docker 的支持,届时用户将收到 Docker 弃用警告,并需要改用其他容器运行时.并在1.23后不再支持dock ...

  7. 配置本地yum源以及挂载镜像

    配置本地yum源以及挂载镜像(centos7.6) 配置yum源 # cd /etc/yum.repos.d 可以备份或者删除里面的文件 新建文件 # touch /etc/yum.repos.d/l ...

  8. Spring学习日记03_IOC_属性注入_集合类型属性

    Ioc操作Bean管理(xml注入集合属性) 注入数组类型属性 注入List集合类型属性 注入Map集合类型属性 Stu类 public class Stu { //1. 数组类型属性 private ...

  9. 互联网巨头们的 SRE 运维实践「GitHub 热点速览 v.21.27」

    作者:HelloGitHub-小鱼干 本周大热点无疑是前几天 GitHub 发布的 Copilot,帮你补全代码,给你的注释提出建议,预测你即将使用的代码组件-如此神奇的 AI 技术,恰巧本周微软也开 ...

  10. lms框架服务注册中心

    服务注册中心原理 在分布式系统里的注册中心.原理是将部署服务的机器地址记录到注册中心,服务消费者在有需求的时候,只需要查询注册中心,输入提供的服务名,就可以得到地址,从而发起调用. 在微服务架构下,主 ...