2013-06-25 77 views
0

我有PHP代碼preg_replace顯示限制?

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

各地使用輸入單引號

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

是我第一次打算過,'strval'也是變量合適的解決方案 – Joshua

+0

@Joshua - 「strval()」究竟是一個解決方案?如果PHP不能存儲一個非常大的整數,那麼就無法通過將其轉換爲字符串來返回 - 到那時值就消失了。 –

0

使用字符串。 PHP cannot handle such large integers除非他們得到轉換爲float:

的整數的大小是與平臺相關的,雖然約兩十億最大值 是通常的值(32位有符號)。通常,64位平臺的最大值約爲9E18。 PHP確實 不支持無符號整數。整數大小可以使用 恆定的PHP_INT_SIZE和最大值使用常量 PHP_INT_MAX自PHP 4.4.0和PHP 5.0.5以來。

在我的電腦,PHP_INT_MAX爲2147483647

綜上所述,請比較:

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