【问题标题】:php validating a amount [duplicate]php验证金额[重复]
【发布时间】:2019-02-28 21:31:34
【问题描述】:

我有一个金额字段,它始终是没有小数点的正数,例如 10000、1200、10、40 等。 我正在使用下面的代码来检查有效金额。

if (!preg_match('/^[1-9][0-9]*$/', $_POST['amount'])) {
    $error[] = 'Invalid amount';
}

对吗。而且,我需要单独使用php的空函数检查空帖子数量还是在preg_match上面也检查空字符串数量。

【问题讨论】:

  • 不,您不需要检查空字符串。您当前的正则表达式强制一位数字存在。

标签: php regex validation


【解决方案1】:

为什么不简单地使用filter_var(),比如:

if (!abs(filter_var($_POST['amount'], FILTER_VALIDATE_FLOAT))) {
    $error[] = 'Invalid amount';
}

【讨论】:

  • 是否需要使用intval
  • 它是否也拒绝像0010这样的金额
  • @KuldeepThakur 你说得对,intval() 就足够了。
  • 好的,谢谢。像 10.5 这样的正浮点数呢
  • @KuldeepThakur 查看我的更新答案。
【解决方案2】:

当转换为绝对 int 值时,我会将字符串与自身进行比较。它更具可读性和可维护性。

if ($_POST['amount'] !== abs(intval($_POST['amount']))) {
    $error[] = 'Invalid amount';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2013-10-14
    • 2021-08-28
    相关资源
    最近更新 更多