检查get值是否为整数(整数)

时间:2012-03-19 11:48:55

标签: php

我正在建立一个房间预订系统,并想知道如何检查用户是否正确输入了一个整数,即表格上的0,1,2,3,4,5,而不是其他任何东西(即留空,输入十进制数字或字母)。

$capacity = $_GET["capacity"];

提前致谢!

7 个答案:

答案 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_varfilter_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读取的值都是字符串。

PHP manual: in_array()

答案 4 :(得分:1)

查看is_numeric功能。

答案 5 :(得分:1)

使用正则表达式匹配整数

preg_match('/^[0-9]\d*$/', $variable)

答案 6 :(得分:-3)

if($_GET["capacity"] >= 0 && $_GET["capacity"] < 5)
{
     //prefect
}
else
{
     //invalid
}