在我尝试在我的服务器上设置的这些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;
}
提前多多感谢!
答案 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
。