You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:03:16