例如,说:
<?php
// Grab the ID from URL, e.g. example.com/?p=123
$post_id = $_GET['p'];
?>
如何检查变量$post_id
是否为数字,以及是否为正整数(即0-9,不是浮点数,分数或负数)?
编辑:无法使用is_int
'因为$_GET
会返回一个字符串。我认为我需要使用intval()
或ctype_digit()
,后者似乎更合适。例如:
if( ctype_digit( $post_id ) ) { ... }
答案 0 :(得分:5)
要检查字符串输入是否为正整数,我总是使用函数ctype_digit。这比正则表达式更容易理解和更快。
if (isset($_GET['p']) && ctype_digit($_GET['p']))
{
// the get input contains a positive number and is safe
}
答案 1 :(得分:2)
is_int仅用于类型检测。并且请求参数默认为字符串。所以它不会起作用。 http://php.net/is_int
独立于工作类型的解决方案:
if(preg_match('/^\d+$/D',$post_id) && ($post_id>0)){
print "Positive integer!";
}
答案 2 :(得分:2)
使用ctype_digit但是,对于正数,您需要添加&#34;&gt; 0&#34;检查
if (isset($_GET['p']) && ctype_digit($_GET['p']) && ($_GET['p'] > 0))
{
// the get input contains a positive number and is safe
}
一般来说,以这种方式使用ctype_digit
if (ctype_digit((string)$var))
防止错误
答案 3 :(得分:1)
正整数且大于0
if(is_int($post_id) && $post_id > 0) {/* your code here */}
答案 4 :(得分:1)
你可以这样做: -
if( is_int( $_GET['id'] ) && $_GET['id'] > 0 ) {
//your stuff here
}
答案 5 :(得分:0)
您可以使用is_numeric检查var是否为数字。你也有is_int。为了测试它是否是肯定的juste做if(var&gt; 0)。