2011-03-08 205 views
0

在我试图在服务器上设置的这些admincp文件中支持相同的错误。我如何解决它们?弃用:函数eregi()已弃用

推荐使用:功能eregi()被弃用在C:\ XAMPP \ htdocs中\ speedyautos \ admincp \ system_cls.php上线152(虚线示出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()被弃用在C:\ XAMPP \ htdocs中\ speedyautos \ admincp \ system_cls.php上线177(虚线示出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()是DEPR ecated在C:\ XAMPP \ htdocs中\ speedyautos \ admincp \ func.php在线路447预先(示线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; 
} 

许多谢谢!

+2

将它们转换为'preg' – kjy112 2011-03-08 19:33:22

+0

Canonical Question:[将ereg表达式转换为preg](http://stackoverflow.com/questions/6270004/converting-ereg-expressions-to-preg) – hakre 2012-05-04 00:40:09

回答

3

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

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

使用

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

。与preg_match,这看起来是这样的:

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

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

1

您的担心有点晚。这些函数从PHP4开始已经被弃用了。这只是新的错误消息。如果这就是你所关心的,那么在php.ini中设置error_reporting()error_level

通过简单地添加一些/ regex /分隔符,几乎可以将任何ereg()函数转换为preg_match()函数。在您的具体的例子,你可以但只使用stripos()通过切换参数:

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

如果这是你与eregi使用正则表达式,使用strpos

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

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

1

它看起来像你试图使用的代码是为旧版本的PHP设计的。

你最好打赌就是联系作者并要求修正错误。

如果做不到这一点,如果你喜欢冒险的感觉,并希望潜入正则表达式的奇妙世界,你可以通过每一个文件eregi电话转换为preg_match电话,考虑到the different syntax that PCRE has compared to POSIX regular expressions。它看起来像是其中一些滥用正则表达式,并且可以用更简单的字符串匹配来替换,如stripos

如果这似乎有点多少工作,您也可以change the error_reporting level排除E_DEPRECATED。您可以在脚本级别或PHP配置级别执行此操作。我建议在脚本级别执行它 - 有可能是在初始例程中的某处调用了error_reporting