簡體   English   中英

$ _GET值或eregi錯誤?

[英]$_GET value or eregi error?

我不確定我的問題在哪里。 我有一個帶參數(GET)的腳本,如:

http://www.xxx.com?isms_restemsg=STOP&value=1

這是我的代碼:

$keyword_allowed = array("STOP", "");

$found_keyword = "N";
$keyword_cf = "";
for($i=0; $i < 2; $i++)
{
    if (eregi($keyword_allowed[$i], $_GET["isms_restemsg"]))
    {
        $found_keyword = "Y";
        $keyword_cf = $keyword_allowed[$i];
    }
}

問題:調用url時發生的事情是:

http://www.xxx.com?isms_restemsg=&value=1

在這種情況下,eregi指令發生了什么。

我問這個問題因為$ found_keyword =“N”,它應該是“Y”或者是否有錯誤?

如果是,你可以幫幫我嗎?

eregi從php 5開始折舊。

請改用stristr

 if (stristr($keyword_allowed[$i], $_GET["isms_restemsg"]))

或者更好的是, array_search

$keyword_allowed = array("STOP", "");
$found_keyword = "N";

if(($keyword_c = array_search($_GET["isms_restemsg"], $keyword_allowed)) !== false) {
    $found_keyword = "Y";
}

你不應該使用eregi() ,因為它已被棄用

它甚至看起來不像你需要正則表達式。

嘗試使用stristr()甚至簡單的比較語法:

if ($keyword_allowed[$i] == $_GET["isms_restemsg"])

(如果你自己寫這個,你也可以控制GET值。)


您可以通過回顯一些調試輸出來幫助自己:

print_r($_GET);
for($i=0; $i < 2; $i++)
{
    echo eregi($keyword_allowed[$i], $_GET["isms_restemsg"]));
}

當URL是這樣的

http://www.xxx.com?isms_restemsg=&value=1

你的$_GET["isms_restemsg"]是空白的

因此, if (eregi($keyword_allowed[$i], $_GET["isms_restemsg"]))

第二個參數在eregi函數中作為null傳遞

不推薦使用eregi停止使用它替換為preg_match

我還不太確定,但可能有其他方法可以實現你想要做的事情。

首先,您可以使用更具體的正則表達式來擺脫循環。 這會檢查兩個選項,STOP和空字符串(這可能是您的eregi測試失敗的原因)。

if (preg_match('/^(STOP | )$/ix', $_GET["isms_restemsg"], $r))
{
    $found_keyword = "Y";
    $keyword_cf = $r[0];
}
else {
    $found_keyword = "Y";
}

或者因為您只需要檢查兩個值:

if (in_array(strtoupper($_GET["isms_restemsg"]), array("STOP", "")) {
   $found_keyword = "Y";
}

暫無
暫無

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

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