时间:2021-07-01 10:21:17 帮助过:22人阅读
发现最近总是在写过滤的一些问题,也写了一两年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 本文地址