删除”;.0”;来自版本号


Removing ".0" from version numbers

我正在开发一个运行时智能软件程序。它收集程序的版本号,这样您就可以查看每个版本号的统计信息。我遇到的问题是,有些计算机发送的是实际版本号(即:0.4),而另一些计算机发送的版本号是错误的(即:0.4.0)。我想知道如果我使用以下内容是否可以:

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

这能解决这个问题吗?还是这只会在以后的道路上造成更多的问题?

这绝对会造成问题。如果这些字符以任何顺序出现在字符串末尾,并且可能多次出现,则rtrim会剥离这些字符。因此1.10将变为1.1,但它们不一定是相同的版本。

在线查看:ideone

如果有一个"实际版本"号,你该怎么办?比如说,5.0,你怎么称呼它?

我建议您使用regex,可能是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=='?.?';

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

我推荐preg_replace():

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

DEMO