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

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

echo intfix(123123123123123); // 1

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

4

3 回答 3

3

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

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

于 2013-07-09T15:17:31.680 回答
3

改变:

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

至:

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

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

于 2013-07-09T15:17:34.980 回答
1
$value = preg_replace("/^[^0-9]+$/", '', $value);
于 2013-07-09T15:17:42.537 回答