我的大数字格式化功能表现得很奇怪

时间:2013-07-09 15:16:13

标签: php

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

此函数应该处理非常大的数字并删除任何非数字或返回0的内容。

echo intfix(123123123123123); // 1

疯狂的是它只在我的实时服务器上返回1,但在我的本地服务器上返回正确的数量。这是怎么回事?

3 个答案:

答案 0 :(得分:3)

您只选择正则表达式中的第一个数字。

更改它: preg_replace("/[^0-9]+/", '', $value);

答案 1 :(得分:3)

变化:

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

要:

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

出了什么问题?您选择了1个数字,而不是路径上的任何内容。什么都没有,所以你保留1号,因为它与数字不匹配,然后什么都不替换。

答案 2 :(得分:1)

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