【问题标题】:PHP validate input to be an integer [duplicate]PHP验证输入是否为整数[重复]
【发布时间】:2012-04-15 16:14:09
【问题描述】:

可能重复:
php validate integer

我通常如何验证用户输入是否为整数? 我的意思是我通过 $_GET 收到一个变量,它必须是一个整数。

【问题讨论】:

  • filter_input(INPUT_GET, $name, FILTER_VALIDATE_INT)
  • ($_GET['var'] === (string)(int) $_GET['var'])
  • 我认为这就是这里的争议,因为人们永远不会通过请求获得真正的整数值,因为它始终是一个字符串。这在学习 PHP 时肯定会令人困惑

标签: php integer


【解决方案1】:

你可以使用:

preg_match('/^[0-9]+$/', $_GET['variable_name']);

【讨论】:

  • 可行,但有点矫枉过正,你不觉得吗?
  • @nico 好吧,他没有为他指定某个案例,所以我认为最通用的解决方案是最合适的:)
  • 这比仅仅转换为 int 更通用吗?
  • @nico 因为用户要求验证而不是将输入转换为整数。如果输入是hfk 怎么办?这应该无法通过验证。
  • PHP 有不同的整数写入方式,一些正则表达式:(([+-]?([1-9][0-9]*|0))|([+-]?(0[xX][0-9a-fA-F]+))|([+-]?(0[0-7]+)))
【解决方案2】:

如果您打算只使用整数而不是其他类型(例如浮点数),则应该使用 is_numeric() 函数或 is_int() 函数。

【讨论】:

  • is_int 不起作用,因为 $_GET 仅包含字符串。 is_numeric 不起作用,因为它允许浮动。
  • 这是一个小问题。解决此问题的一个简单方法是使用嵌套的 if 先检查它是否为数字,然后再检查它是否为 int。
  • 这将始终导致错误,因为即使它是数字字符串,它也不是整数,例如is_numeric("123") !== is_int("123")
猜你喜欢
  • 2017-11-25
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
相关资源
最近更新 更多