preg_replace显示有限制?

时间:2013-06-25 12:08:26

标签: php function preg-replace

我有php代码

preg_replace( "/([0-9]{2})([0-9]{4})([0-9]{4})([0-9]{4})/", 
               "$1 $2 $3 $4", 
               121234123412341234)

结果是1.21234123412E+17。我需要12 1234 1234....

也许我需要使用其他功能?

2 个答案:

答案 0 :(得分:2)

在输入

周围使用单引号
echo preg_replace("/([0-9]{2})([0-9]{4})([0-9]{4})([0-9]{4})/", "$1 $2 $3 $4", '121234123412341234');

<强>输出

12 1234 1234 12341234

Codepad

答案 1 :(得分:0)

使用字符串。 PHP cannot handle such large integers,除非它们转换为float:

  

整数的大小取决于平台,尽管是最大值   大约20亿是通常的值(32位签名)。   64位平台的最大值通常约为9E18。 PHP确实如此   不支持无符号整数。可以使用确定整数大小   常量PHP_INT_SIZE,使用常量的最大值   自PHP 4.4.0和PHP 5.0.5以来的PHP_INT_MAX。

在我的电脑中,PHP_INT_MAX是2147483647。

总结一下,请比较:

var_dump(121234123412341234, '121234123412341234');
float(1.2123412341234E+17)
string(18) "121234123412341234"