我正在寻找一种方法,它可以让我检查系统中的有效ID。
它们的定义是:
- 正而不是0
- 整数,但可能大于整数
- 以字符串或数字形式出现
我想知道你认为验证这一点最优雅的方式是什么。失败的候选人是:
is_int()
,因为它对负数有效,AND因为整数大小限制is_numeric()
,因为它对float有效,或者说,具有这样的指数部分+0123.45e6ctype_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评论