大数正则表达式

时间:2013-07-13 18:30:57

标签: php

$value = preg_replace("/[^0-9]+/", '', $value);

我怎么能编辑这个正则表达式来摆脱小数点后的所有内容?可能有也可能没有小数点。

目前“100.1”变为1001但应该是100。

完成功能:

   function intfix($value)
    {
        $value = preg_replace("/[^0-9]+/", '', $value);
        $value = trim($value);
        return $value + 0;
    }

它用于格式化数字的用户输入以及服务器输出以格式化数字的数字。函数处理非常大的数字,所以我不能使用intval或类似的。欢迎提出任何改进此功能的额外评论。

3 个答案:

答案 0 :(得分:1)

您需要一个以小数位开始搜索的模式。目前,您只是删除了.而不是其后的数字......所以您可以'/\.[\d]+/'

$text = "1201.21 12 .12  12.21";
$text = preg_replace('/\.[\d]+/', '' ,$text);

以上代码会产生$text = "1201 12 12"

答案 1 :(得分:1)

您只需将正则表达式更改为/[^0-9].*/s

.*匹配零个或多个字符,因此第一个不是数字的字符和紧随其后的数字将被删除。

答案 2 :(得分:0)

为什么不$value = round($value, 0);?这可以处理大值,并且意味着以数学方式去除以下小数(我宁愿使用数字作为数字而不是字符串)。如果您想要删除小数PHP_ROUND_HALF_DOWN - >,您可以将10.7作为第三个参数传递10。或floor($value);也可以。