php验证整数

omt*_*mtr 17 php

我想知道为什么这不起作用

    echo gettype($_GET['id']); //returns string
  if(is_int($_GET['id']))
  {
   echo 'Integer';
  }
Run Code Online (Sandbox Code Playgroud)

如果它是整数,如何验证从GET/POST传递的数据?

Gor*_*don 29

可以使用

$validatedValue = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
Run Code Online (Sandbox Code Playgroud)

请参阅http://php.net/filter_input和相关功能.


cod*_*ict 25

手册说:

要测试变量是数字还是数字字符串(例如表单输入,始终是字符串),必须使用is_numeric().

您可以选择使用基于正则表达式的测试:

if(preg_match('/^\d+$/',$_GET['id'])) {
  // valid input.
} else {
  // invalid input.
}
Run Code Online (Sandbox Code Playgroud)

  • preg_match不应该接受负数吗?据我所知,整数可以是负数,因此-5应该被接受为Int. (3认同)
  • 但是is_numeric()也接受异国情调. (2认同)