PHP egegi 转换 preg_match

更新于2015-03-27 11:02:33 | 894次浏览
摘要 : PHP 5.2 升级到 5.3,但升级后,发现 5.3 不支持 eregi 函数了,提示使用了过期的函数。

一个网站一直在用 PHP 5.2,今天想升级到 5.3,升级的过程不说了,还算顺利,但升级后一运行,发现 5.3 不支持 eregi 函数了,提示使用了过期的函数。上网查了一下,原来 5.3 放弃了 eregi 函数,建议用 preg_match 代替,于是直接将所有 egegi 改成 preg_match,发现出错,仔细看了看 preg_match 的语法,才恍然大悟,下边是一个例子。

一般网站为了防止 SQL 注入,都会检查提交表单的变量,升级 5.3 之前是这样的

if (egegi("select|insert|update|delete|union|into|load_file|outfile
|\'|\/\*|\*|\.\.\/|\.\/", $var)) show_msg("您的操作可能存在非法注入!");

改成 preg_match 后是这样的

if (preg_match("/select|insert|update|delete|union|into|load_file
|outfile|\'|\/\*|\*|\.\.\/|\.\//i", $var)) show_msg("您的操作可能存在非法注入!");

需要在正则的两边加斜杠。

推荐文章