![](/img/trans.png)
[英]How to check if the input value is coming from a select option or an input text
[英]How to check if string value returned from text input is integer
我有一個用戶搜索關鍵字的表單。
我想檢查用戶是否提交了一個數字(整數)而不是關鍵字。
我用這個:
$keyword = $_REQUEST["keyword"];
if (is_int($keyword)) {
echo 'true';
} else {
echo 'false';
}
但即使提交的值是整數,它也始終返回false。
is_int
檢查變量是否為整數類型 。 你擁有的是一個字符串,其字符碰巧代表一個整數。
嘗試:
if (is_numeric($keyword) && is_int(0+$keyword))
0+
將隱式地將以下內容轉換為數字類型,因此如果可能,您將最終得到字符串的數值。 首先調用is_numeric
確保您不會轉換垃圾。
is_int()
用於類型安全比較,因此從瀏覽器接收的字符串始終計算為false
。
如果你真的需要檢查一個變量是否是一個integer
你可以使用這個方便的函數:
function str_is_int($number) {
// compare explicit conversion to original and check for maximum INT size
return ( (int)$number == $number && $number <= PHP_INT_MAX );
// will return false for "123,4" or "123.20"
// will return true for "123", "-123", "-123,0" or "123.0"
}
注意:您應該將PHP_INT_MAX替換為目標系統的最大整數大小 - 例如您的數據庫。
在is_int()
的文檔中,您可以閱讀:
is_int - 查找變量的類型是否為整數
bool is_int ( mixed $var )
注意:
要測試變量是數字還是數字字符串(例如表單輸入,始終是字符串),必須使用is_numeric()
。
例:
<?php
if (is_int(23)) {
echo "is integer\n";
} else {
echo "is not an integer\n";
}
var_dump(is_int(23));
var_dump(is_int("23"));
var_dump(is_int(23.5));
var_dump(is_int(true));
?>
上面的例子將輸出:
is integer
bool(true)
bool(false)
bool(false)
bool(false)
我認為ctype_digit()
將適用於您的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.