Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的大数字格式化函数运行异常_Php - Fatal编程技术网

Php 我的大数字格式化函数运行异常

Php 我的大数字格式化函数运行异常,php,Php,这个函数应该处理非常大的数字,并去掉任何不是数字的东西或返回0 function intfix($value) { $value = trim($value); $value = preg_replace("/[^0-9](.*)$/", '', $value); return $value+0; } 疯狂的是,它在我的实时服务器上只返回1,但在我的本地服务器上返回正确的数量。这是怎么回事?您只选择了正则表达式中的第一个数字 更改它:

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

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

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

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

更改它:
preg_替换(“/[^0-9]+/”,“$value”)

更改:

echo intfix(123123123123123); // 1
致:


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

可能您使用的是32位操作系统,并且超过了最大整数值。需要切换到64位才能处理如此大的数字。(好吧,如果这不是解决办法,至少要记住这是一件聪明的事情,当它击中你时不要把头撞到墙上)错误存在于你的本地服务器上。实时服务器是正确的。这有多奇怪?请注意,通过强制转换为整数,您只能表示最大为PHP_INT_MAX的数字
$value = preg_replace("/[^0-9]+/", '', $value);
$value = preg_replace("/[^0-9]+/", '', $value);
$value = preg_replace("/^[^0-9]+$/", '', $value);