2011-10-06 44 views
2

試圖將查詢字符串獲取到變量中,但僅限於整數。僅在整數時才獲取查詢字符串

代碼可能是一個比較複雜一點比它應該是,但是這就是我了TO-

//get page number. default is 1. check is not empty and is a number  
    if (empty($_GET['pag'])) {$page = 1;} 
    else if (is_int($_GET['pag'])){$page = $_GET['pag'];} 
    else {$page = 1;} 

我要去哪裏錯了?

+0

嘗試is_numeric原因$ _GET有字符串類型 – Melsi

回答

5

您可能想要is_numeric()而不是 - is_int()不測試以查看字符串是否爲數字字符串。

if (empty($_GET['pag'])) {$page = 1;} 
else if (is_numeric($_GET['pag'])){$page = (int) $_GET['pag'];} 
else {$page = 1;} 
+0

我搜索了一切,甚至發現,並且由於某種原因,它沒有註冊我...謝謝! – penpen

+1

如果您正在使用這些變量從數據庫表中查找id值,則is_numeric將爲具有小數的值返回true,例如9.1,這可能不是您想要的值。如果這是你的情況,請嘗試類型爲int(),如下所示 –

2

我建議,類型轉換價值爲整數:

$page = empty($_GET['pag']) ? 1 : (int) $_GET['pag']; 

儘管如此,如果我記得很清楚,類型轉換的東西,是不是一個整數會使其0,但你應該無論如何,如果$ page在任何事情之前都處於邊界之間,那麼用戶不妨在URL中鍵入?pag0。

2
$page = ((isset($_GET['pag']) && is_numeric($_GET['pag'])) ? (int)$_GET['pag'] : 1;