我正在建立一个房间预订系统,并想知道如何检查用户是否正确输入了一个整数,即表格上的0,1,2,3,4,5,而不是其他任何东西(即留空,输入十进制数字或字母)。
$capacity = $_GET["capacity"];
提前致谢!
答案 0 :(得分:5)
根据评论检查首先设置post变量,否则在最近的PHP版本中引发警告:
isset($_GET['capacity'])
因此,您可以:
将其投射到int:
$capacity = isset($_GET['capacity']) ? (int)$_GET['capacity'] : null
使用功能
$capacity = is_numeric($_GET['capacity']) ? (int)$_GET['capacity'] : null;
// cast to int as is_numeric will return floats too
将其设为数字并与原始输入进行比较:
$capacity = ((int)$_GET['capacity']) == $_GET['capacity']) ? $_GET['capacity'] : null;
在输入可能超过MAX_INT或通过其他方式进行修改的情况下,这最后是理想的。
答案 1 :(得分:2)
preg_match('/^[0-5]$/', $_GET['capacity']);
如果不仅限于0到5,
preg_match('/^[0-9]+$/', $_GET['capacity']);
答案 2 :(得分:2)
这是一个过滤工作,所以一个很好的选择是使用过滤器模块(http://php.net/filter)
因此您可以使用filter_var或filter_input将FILTER_VALIDATE_INT作为标志并将结果与false进行比较(严格比较,以避免由0引起的混淆)
答案 3 :(得分:2)
如果您愿意,我有不同的方法:
$validValues=array('0','1','2','3','4','5');
$capacity = $_GET["capacity"];
$isValid=in_array($capacity,$validValues); //TRUE if entered value is in the valid values.
无论如何,从$ _GET读取的值都是字符串。
答案 4 :(得分:1)
查看is_numeric
功能。
答案 5 :(得分:1)
使用正则表达式匹配整数
preg_match('/^[0-9]\d*$/', $variable)
答案 6 :(得分:-3)
if($_GET["capacity"] >= 0 && $_GET["capacity"] < 5)
{
//prefect
}
else
{
//invalid
}