如何在PHP中验证数字字符串


how to validate numeric strings in PHP

我正在寻找一种方法,它可以让我检查系统中的有效ID。

它们的定义是:

  • 正而不是0
  • 整数,但可能大于整数
  • 以字符串或数字形式出现

我想知道你认为验证这一点最优雅的方式是什么。失败的候选人是:

  • is_int(),因为它对负数有效,AND因为整数大小限制
  • is_numeric(),因为它对float有效,或者说,具有这样的指数部分+0123.45e6
  • ctype_digit()将输入强制转换为字符串,因为这是有效的:"0000"

到目前为止,我已经接受了这个:

preg_match('/^[1-9][0-9]*$/',(string)$id);

有人能想出一个替代方案吗?

尝试使用filter_VALIDATE_INT的filter_var函数。对于有效整数,可以指定范围。可能有与大小限制相同的限制,但为此,您必须构建一个完全满足您需求的自定义函数。

您可以使用

function vaild_id($passed_value=-1)
{
    if((is_int($passed_value)) && ($passed_value > 0)) return true;
    else return false; 
}

如果你需要,这也将允许你添加其他规则

  • 注意事项:is_int[和php]对允许的整数的总大小有限制,这取决于您使用的是32位还是64位,所以要考虑到这一点php.net关于系统位环境的is_int评论