2011-03-08 202 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