2012-07-14 83 views
2

我正在開發一個運行時智能軟件程序。它收集程序的版本號,以便您可以查看每個版本號的統計信息。我遇到的問題是有些電腦發送的是實際的版本號(即:0.4),而其他電腦則發送了錯誤的版本號(即:0.4.0)。我在想,如果這將是,如果我用像OK:從版本號中刪除「.0」

$version = rtrim($version, ".0"); 

將這項工作,以擺脫這個問題的還是什麼這只是導致以後的道路更多的問題?

+2

的'0.4.0'最後一段是沒有錯誤的。 0.4.0版本和0.4.1版本之間有區別。 – 2012-07-14 07:23:49

+0

所以是1.0.0版的零是有原因。 – 2012-07-14 07:28:26

回答

1

這絕對會導致問題。 rtrim如果這些字符以任意順序出現在字符串的末尾,並可能多次刪除它們。因此1.10將成爲1.1但這些不一定是相同的版本。

網上看到它:ideone

+0

------------------------------------------------- ----- – arkascha 2012-07-14 07:23:12

+0

更重要的是10.01會變成101 – 2012-07-14 07:39:47

+0

等一下,'rtrim',derp。 Nevermind ... – 2012-07-14 07:41:26

0

而且你會怎麼做,如果有一個「真實版本」號,你怎麼稱呼它,都說,5.0?

我建議你使用正則表達式來代替,大概的preg_match()函數:

$tokens=preg_match($version,'/^([0-9]+)\.([0-9]+)/',$tokens); 
if (3=count($tokens)) 
    $actualVersion=sprintf('%s.%s',$tokens[1],$tokens[2]); 
else $actualVersion=='?.?'; 
0

基於馬克拜爾斯的回答,你不能使用rtrim()

我建議preg_replace()

$ver = '0.4.0'; 
$pattern = '/^([0-9.]+)\.0$/'; 
$replacement = '${1}'; 
echo preg_replace($pattern, $replacement, $ver); 

DEMO