我正在开发一个运行时智能软件程序。它收集程序的版本号,因此您可以查看每个版本号的统计信息。我遇到的问题是某些计算机正在发送实际版本号(即:0.4),而其他计算机正在发送错误的版本号(即:0.4.0)。我想知道如果我使用类似的东西是否可以:
$version = rtrim($version, ".0");
这是否可以解决这个问题,或者这只会在以后导致更多问题?
我正在开发一个运行时智能软件程序。它收集程序的版本号,因此您可以查看每个版本号的统计信息。我遇到的问题是某些计算机正在发送实际版本号(即:0.4),而其他计算机正在发送错误的版本号(即:0.4.0)。我想知道如果我使用类似的东西是否可以:
$version = rtrim($version, ".0");
这是否可以解决这个问题,或者这只会在以后导致更多问题?
这绝对会导致问题。rtrim
如果这些字符以任何顺序出现在字符串的末尾,并且可能多次出现,则删除这些字符。所以1.10
会变成1.1
但这些不一定是相同的版本。
在线查看:ideone
如果有一个“实际版本”号码,你怎么称呼它,比如 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=='?.?';
根据Mark Byers的回答,您不能使用rtrim()
.
我推荐preg_replace()
:
$ver = '0.4.0';
$pattern = '/^([0-9.]+)\.0$/';
$replacement = '${1}';
echo preg_replace($pattern, $replacement, $ver);