不推荐使用:不推荐使用函数eregi()

时间:2011-03-08 19:32:24

标签: php

在我尝试在我的服务器上设置的这些admincp文件中支持了同样的错误。我怎么解决他们?

不推荐使用:在第152行的C:\ xampp \ htdocs \ speedyautos \ admincp \ system_cls.php中弃用了函数eregi()(显示为第152-155行)

if (!eregi("install", $_SERVER['REQUEST_URI']) && !eregi("install", $_SERVER['PHP_SELF']))
                {
                                exit("No " . TABLE_PREFIX . "db.php Present. Please run Install first");
                }

不推荐使用:函数eregi()在第177行的C:\ xampp \ htdocs \ speedyautos \ admincp \ system_cls.php中弃用(显示第177-184行)

if (!eregi("install", $_SERVER['REQUEST_URI']) && !eregi("install", $_SERVER['PHP_SELF']) && !eregi("upgrade", $_SERVER['PHP_SELF']) && !eregi("admincp", $_SERVER['REQUEST_URI']) && !eregi("searchjs.php", $_SERVER['REQUEST_URI']) && !eregi("locationjs.php", $_SERVER['REQUEST_URI']))
{
                register_shutdown_function("SysTime");
                if (!verifysession() && ($SystemInfo->_systemstatus['User_Signup'] != "F" || $SystemInfo->_systemstatus['Seller_Signup'] != "F" || $SystemInfo->_systemstatus['Dealer_Signup'] != "F"))
                {
                                eval("\$loginlink = \"" . $Template->gettemplate("register_link") . "\";");
                }
}

不推荐使用:函数eregi()在第447行的C:\ xampp \ htdocs \ speedyautos \ admincp \ func.php中弃用(显示为442-451行)

if (!$GLOBALS['noshutdownfunc'])
                {
                                register_shutdown_function("CleanSessionTbl");
                }

} elseif (!eregi("install", $_SERVER['REQUEST_URI']) AND !eregi("install", $_SERVER['PHP_SELF']))
{
                echo "Please delete the install.php file";
                exit;
}

提前多多感谢!

5 个答案:

答案 0 :(得分:3)

通常,您应该使用preg_*正则表达式匹配系列。但是,大多数ereg调用实际上只是搜索不区分大小写。而不是

!eregi("install", $_SERVER['PHP_SELF'])

使用

stripos($_SERVER['PHP_SELF'], 'install') === false

。使用preg_match,看起来像这样:

!preg_match('/install/i', $_SERVER['PHP_SELF'])

答案 1 :(得分:1)

eregi("install", $_SERVER['REQUEST_URI'])更改为preg_match("/install/i", $_SERVER['REQUEST_URI'])

答案 2 :(得分:1)

您的担忧有点迟了。自PHP4以来,这些函数已被弃用。这只是新的错误消息。如果您只关心这一点,那么在php.ini中设置error_reporting()error_level

只需添加一些/ regex / delimiters,就可以将几乎所有的ereg()函数转换为preg_match()。在您的具体示例中,您可以通过切换参数来使用stripos()

 stripos($_SERVER['REQUEST_URI'], "install")

答案 3 :(得分:1)

如果这是您使用eregi时使用的所有正则表达式,请使用strpos

if (strpos($string_to_search_in, "install") === FALSE)  // Notice the three =
     echo("not found :(");
else
     echo("Found!");

如果您使用更高级的正则表达式,则可以在正则表达式调用之前搜索的字符串中执行strtolower

答案 4 :(得分:1)

您尝试使用的代码似乎是为旧版本的PHP设计的。

您最好的选择是与作者联系并要求修复错误。

如果你失败了,如果你有冒险精神并希望深入了解正则表达式的精彩世界,你可以浏览每个文件并将eregi调用转换为{{3 }调用,考虑到preg_match。看起来其中一些是滥用正则表达式,可以用更简单的字符串匹配替换,如the different syntax that PCRE has compared to POSIX regular expressions

如果这看起来有点多,你也可以stripos排除E_DEPRECATED。您可以在脚本级别或PHP配置级别执行此操作。我建议在脚本级别执行此操作 - 可能是在init例程中某处调用了error_reporting