欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 超强过滤函数

程序员文章站 2022-06-06 08:08:26
...
PHP 超强过滤函数
你有每次要过滤的时候总是去翻以前的过滤代码的时候么?
你有搜索过如何防过滤,防攻击的PHP解决方法么?
你有对完全遵循'过滤输入,避免输出',Web界经典说辞么?
其实这些问题,就是需要我们时常的过滤掉输入的数据,那么,根据写了这么多代码的经验来看,过滤白名单方式比较靠谱!
当然,你有什么更好的代码什么的,欢迎留言讨论!


发现最近总是在写过滤的一些问题,也写了一两年PHP了,发现过滤问题一直是个大问题,不才,下面整理出来了一个通用的基于白名单的过滤函数,

如果发现你那里用不了,联系我的qq852208555,一起探讨吧!

GBK GB2312 编码的实现


下面是UTF-8的模式:(主要是汉字匹配不同)

AlFilter($str=NULL,$operate,$ext=NULL){	if(!$str) return 0;	//匹配模式 $pattern	$Cp="\x{4e00}-\x{9fff}";	$Dp='0-9';	$Wp='a-zA-Z';	$Tp='@#$%^&*()-+=';	$_p='_';		$pattern="/^[";	$OArr=str_split(strtolower($operate));//拆分操作符	if (in_array('c', $OArr)) $pattern.=$Cp;	if (in_array('d', $OArr)) $pattern.=$Dp;	if (in_array('w', $OArr)) $pattern.=$Wp;	if (in_array('t', $OArr)) $pattern.=$Tp;	if (in_array('_', $OArr)) $pattern.=$_p;	if($ext) $pattern.=$ext;	$pattern.="]+$/u";	if(!preg_match($pattern,$str))		return 0;	else 		return $str;		}


当然也可以只用UTF-8 GBK的转码过去匹配...反之亦然,不过我觉得麻烦当然有什么更好地改进办法,欢迎大家讨论,不吝赐教!



转载说明来自 爱乐爱快乐 我的博客地址:http://blog.csdn.net/lovehappying 本文地址