我正在开发一个运行时智能软件程序。它收集程序的版本号,这样您就可以查看每个版本号的统计信息。我遇到的问题是,有些计算机发送的是实际版本号(即: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