我不知道该如何处理这个问题,我试过对我来说最明显的解决方案,但到目前为止还没有一个完全令人满意,我一定是忽略了一些非常简单的东西。
我有一个输入类型为text的表单:
<input type="text" name="album_id">
我想验证输入,以便用户只输入无符号整数...
$required = array(); // required or invalid input
$tmp = trim($_POST['album_id']);
if (!is_int((int)$tmp)) {
$required['album'] = 'The album id must contain a positive numeric value only.';
}
到目前为止,我使用的是!is_numeric($tmp)
,但用户可以输入9.2或“1e4”,它将进行验证......因此其中一个不起作用。
我也试过!is_int((int)$tmp)
,但由于某种原因,那个不起作用(也许它应该起作用,但我做错了...)。我试过ctype_digit
,但没有成功。我可能忽略了一些东西,但不确定是什么。
如何在php中验证一个无符号数?没有浮点数,负数等...只有一个简单的无符号数(1到n)。
4条答案
按热度按时间gudnpqoy1#
如果您想检查某个变量是否只包含数字 (这似乎是您想要的),您可能必须使用
ctype_digit()
。不知道你尝试了什么,但像这样的东西应该工作:
ycggw6v22#
filter_var()
函数是完成此任务的合适工具。下面是一个只对无符号整数或无符号整数字符串返回非false的过滤器:
这是documentation on filters。
示例:
输出:
ffx8fchx3#
您可以使用
preg_match()
:注意,这不会执行正范围检查(例如,超过整数的最大有效值)。
编辑:使用PascalMARTIN的解决方案,除非你想做更复杂的检查(例如,需要其他特殊字符),因为我猜它提供了更好的性能用于这种用途。
jw5wzhpr4#