如何将PHP中使用eregi的代码替换为preg_match?
如何将PHP中使用eregi的代码替换为preg_match?
我来帮你搞定这个转换问题!首先得搞清楚eregi和preg_match的核心区别:eregi是PHP里旧的不区分大小写正则匹配函数,它不需要正则定界符;而preg_match属于PCRE正则函数,必须给正则表达式加上定界符,同时如果要保持不区分大小写的特性,得手动加上i修饰符。
先看你原来的代码:
if (eregi("mainfile.php",$PHP_SELF)) { header("Location: index.php"); die(); }
把它改成preg_match的正确写法是这样的:
if (preg_match("/mainfile.php/i", $_SERVER['PHP_SELF'])) { header("Location: index.php"); die(); }
我给你拆解下关键改动点:
- 替换函数名:把
eregi换成preg_match - 添加正则定界符:给匹配字符串
mainfile.php前后加上/(你也可以用#、~这类不会和匹配内容冲突的符号当定界符,PCRE正则要求必须有定界符) - 保留不区分大小写特性:在定界符结尾加上
i修饰符,和原eregi的行为保持一致 - (小提醒)旧版PHP里的
$PHP_SELF其实是超全局变量$_SERVER['PHP_SELF']的简写,现在推荐直接用$_SERVER['PHP_SELF'],兼容性会更好
你之前转换失败大概率是没加定界符或者忘了加i修饰符,试试上面的代码应该就能正常工作啦~
内容来源于stack exchange
相关产品推荐
相关产品推荐

