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