[英]$_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.