2013-10-06 44 views
0

考慮下面的代碼PHP - 簡單的正則表達式

$t = preg_replace('/0+$/','',".800000000000000"); //Replace last 0s 

這給了我輸出.8預期

現在考慮下面的代碼

$a = .80; 
$t = sprintf('%.15f', $a)."<br>"; 
echo "First : $t<br>"; 
$t = preg_replace('/0+$/','',$t); 
echo "Second : $t <br>"; 

這給作爲 首頁輸出:0.800000000000000 第二:0.800000000000000

你能幫我找出爲什麼在這種情況下最後的0不會被正則表達式替代,因爲預期的輸出是0.8?

回答

1

你的變量$t包含0.800000000000000<br>所以沒有尾隨零切斷。

您必須在追加<br>之前縮短字符串。

3

你在最後追加一個<br>標籤,而正則表達式表示0的行結束前

'/0+$/' 
    ^<- end of line, nothing should come after 0's 
".800000000000000" 

$a = .80; 
$t = sprintf('%.15f', $a)."<br>"; 
// $t = .800000000000000<br> 
4

由於要添加<br>$t這一行的末尾:

$t = sprintf('%.15f', $a)."<br>"; 

您的正則表達式不再匹配尾部0. "<br>"是演示文稿的一部分,您應該在最後添加它。

+0

哦!對不起,我無法注意到這一點。非常感謝。 – AVC

+0

如果您有任何問題,請將其中一個解決方案標記爲[accepted](http://stackoverflow.com/help/someone-answers)。 –