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


My big numbers formatting function is behaving oddy

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

这个函数应该处理非常大的数字,并摆脱任何不是数字或返回 0 的东西。

echo intfix(123123123123123); // 1

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

更改:

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

自:

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

出了什么问题?你选择了 1 个数字,比路径上的任何内容都重要。一无是处,所以你保留 1 数字,因为它除了数字之外没有任何匹配,然后用什么都不替换所有内容。

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

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

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