【发布时间】:2016-09-12 15:44:57
【问题描述】:
我需要验证用户在输入字段中插入的值是否只是一个数字。输入字段是价格,因此只应接受 0 到 9 之间的有效数字,并且我也会避免使用小数点。
所以在阅读之后我发现也许我可以使用intval 返回输入值的整数,然后比较is_int 是否输入只是整数。我想避免is_numeric,因为这样+0123.45e6这样的代码可以返回true
但我没有运气,不知怎的,它并没有像我打算的那样工作。这是我要验证的代码。
$price = isset($_POST['price']) ? intval($_POST['price']) : '';
if( ($price != '') && (!is_int($price)) ) { // If price is correct
$throw_error[] = __( '<strong>ERROR</strong>: Price must be only number.' );
$errors = true;
$price = '';
}
但不知何故,这无法验证,并且像sdadaar 这样的一些字母可以传递错误。
【问题讨论】:
-
所有帖子数据都是字符串:php.net/manual/en/function.is-numeric.php
-
我知道,这就是为什么我想使用
intval不会intval将该字符串转换为整数值? -
如果将其转换为整数,那么它将始终传递
is_int()。 -
您发布的代码应该可以工作。这使我怀疑您没有在此处提交整个代码,并且您实际上是在更下方使用
$_POST['price']。 -
@ChristianF 这是代码中唯一与价格相关的部分,也许我应该提到这是在 WordPress 内部完成的,但由于它只是页面模板中的自定义函数,我不认为什么都有。
标签: php validation int