【问题标题】:php input with 1 decimal numberphp输入1个十进制数
【发布时间】:2012-05-11 09:39:06
【问题描述】:

所有, 我正在制作一个只接受小数点后 1 位输入数字的购物车。 以下是我从库中获得的一段代码(经过一些修改):

$items['qty'] = trim(preg_replace('/([^0-9\.])/i', '', $items['qty']));

这将接受任何数字。但我只想将其设为小数点后 1 位。如何修改代码?

谢谢

【问题讨论】:

标签: php regex numbers preg-replace decimal


【解决方案1】:

这可以用round函数来完成

echo round(153.751, 1);  // 153.8

这将有助于Rounding numbers with PHP

【讨论】:

    【解决方案2】:

    您可以删除第一个小数位后的小数位:

    $items['qty'] = trim(preg_replace('/[^0-9\.]+|(?<=\.[0-9])[0-9+]+/', '', $items['qty']));
    

    See it

    【讨论】:

    • 嗨@codaddict,你的溶胶解决了我的问题:) 但是你知道如何同时包含“,”和“。”即 1.4 和 1,4 都可以接受?谢谢
    • @mario:可以在字符类中添加,$items['qty'] = trim(preg_replace('/[^0-9.,]+|(?&lt;=[.,][0-9])[0-9+]+/', '', $items['qty']));
    【解决方案3】:

    您可以使用 ^(\d+.{0,1}\d*)$ 之类的正则表达式

    但是 PHP 有一个概念,过滤器,它会为您做很多验证,http://php.net/manual/en/filter.filters.validate.php

    【讨论】:

      【解决方案4】:

      如果我理解这个问题,你可以使用 number_format

      $items['qty'] = number_format(trim(preg_replace('/([^0-9\.])/i', '', $items['qty'])),1,".","");
      

      希望对你有帮助。

      【讨论】:

        【解决方案5】:

        添加一行:

        $items['qty'] = sprintf('%.1f', $items['qty'])
        

        【讨论】:

          猜你喜欢
          • 2017-08-22
          • 2014-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-02
          • 2019-08-16
          • 1970-01-01
          相关资源
          最近更新 更多