2

我正在开发一个运行时智能软件程序。它收集程序的版本号,因此您可以查看每个版本号的统计信息。我遇到的问题是某些计算机正在发送实际版本号(即:0.4),而其他计算机正在发送错误的版本号(即:0.4.0)。我想知道如果我使用类似的东西是否可以:

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

这是否可以解决这个问题,或者这只会在以后导致更多问题?

4

3 回答 3

1

这绝对会导致问题。rtrim如果这些字符以任何顺序出现在字符串的末尾,并且可能多次出现,则删除这些字符。所以1.10 会变成1.1但这些不一定是相同的版本。

在线查看:ideone

于 2012-07-14T07:22:14.413 回答
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=='?.?';
于 2012-07-14T07:27:08.363 回答
0

根据Mark Byers的回答,您不能使用rtrim().

我推荐preg_replace()

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

演示

于 2012-07-14T07:35:59.237 回答