簡體   English   中英

幫助將PHP eregi轉換為preg_match

[英]Help converting PHP eregi to preg_match

我想知道是否有人可以幫我轉換一段現已棄用的PHP代碼。

這是我試圖轉換的單行:

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。

嘗試更換:

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已被棄用,我們需要使用帶有i選項的preg_match作為替代品。

一般來說

eregi($regex,$input)

可以替換為:

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

編輯:

它假設上面的$regex不包含任何/用作分隔符 如果確實如此,則必須使用不同的分隔符,如@#| 不包含在$regex

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

或者,您也可以轉義$regex所有出現的分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM