检查变量是否是PHP中的数字和正整数?

时间:2013-10-12 10:43:16

标签: php validation variables numbers integer

例如,说:

<?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 ) ) { ... }

6 个答案:

答案 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)。