2010-04-19 155 views
3

我想知道如果有人可以請幫助我轉換一段PHP代碼,現在已棄用。幫助轉換PHP eregi preg_match

這裏是我試圖轉換單行:

if(eregi(trim ($request_url_handler[$x]),$this->sys_request_url) && $this->id_found == 0){ 

它是一個網站返回的配置設置的功能的一部分。以下是整個功能。

// GET CORRECT CONFIG FROM DATABASE 
function get_config($db) 
{ 
    global $tbl_prefix; 
    $db->query("SELECT cid,urls FROM ".$tbl_prefix."sys_config ORDER BY cid"); 

    while($db->next_record()){ 
     $request_url_handler = explode("\n",$db->f("urls")); 
     if(empty($request_url_handler[0])) { 
      $request_url_handler[0] = "@"; 
      $this->id_found = 2; 
     } 

     for($x=0; $x<count($request_url_handler); $x++) { 
      if(empty($request_url_handler[$x])) { 
       $request_url_handler[$x] = "@"; 
      } 
      if(eregi(trim($request_url_handler[$x]),$this->sys_request_url) && $this->id_found == 0) { 
       $this->set_config($db,$db->f("cid")); 
       $this->id_found = 1; 
      } 
     } 

     if($this->id_found == 1) { 
      return($this->sys_config_vars); 
     } 
    } 

    $this->set_config($db,""); 
    return($this->sys_config_vars); 
} 

任何幫助將不勝感激。我只發現eregi函數已被棄用,因爲我將XAMPP更新爲1.7.3。

+0

請參閱[「如何將PHP的eregi更改爲preg_match」](http://customphpfunctions.blogspot.com/2011/12/how-to-change-phps-eregi-to-pregmatch.html)以獲取想法關於這兩個功能以及用其他替換折舊的功能。 – 2011-12-04 19:35:24

回答

3

嘗試更換:

if(eregi(trim($request_url_handler[$x]),$this->sys_request_url) && $this->id_found == 0) { 

有:

$request_url_handler[$x] = trim($request_url_handler[$x]); 
if(preg_match("/$request_url_handler[$x]/i",$this->sys_request_url) && $this->id_found == 0) { 

eregi已過時,我們需要使用preg_matchi的選擇,因爲它的替代品。

一般而言

eregi($regex,$input) 

可以替換:

preg_match("/$regex/i",$input) 

編輯:

及其假設$regex以上不包含其被用作任何/分隔符。如果是的話那麼你就必須使用不同的分隔符說@#|不包含在$regex

preg_match("#$regex#i",$input) 

另外,您還可以逃避在$regex分隔符的所有出現。

+0

感謝百萬幫助我解決這個問題。它會出現一個錯誤:警告:preg_match()[function.preg-match]:第57行的C:\ xampp \ htdocs \ VirtualCMS \ system \ class_config.php中的未知修飾符'/' – Jason 2010-04-19 04:43:06

+0

您需要將' /',如果正則表達式包含斜線,則使用'/'。 – 2010-04-19 04:49:39

+0

@Jason:我已經更新了我的答案。嘗試在preg_match中使用不同的分隔符。 – codaddict 2010-04-19 04:50:32