看了网上很多比较软件版本号的帖子,感觉有些同学没有考虑到小数点位数不对等时的情况。
比如:
oldVer = "1.7.1"
newVer = "1.12"
如果只是用正则表达式去掉小数点,比较整数,会发现171大于112.
实际情况是newVer=“1.12” > oldVer=“1.7.1”
简单写了一下代码,仅供各位同学参考,实际运用中还需要过滤版本号里的特殊字符,小数点位数大于2个,主版本号和子版本号大于2位的情况
function version_to_integer($version){
$arrver = explode('.', $version);
if( isset($arrver[2]) ){
$integer_version = $arrver[0]*10000 + $arrver[1]*100 + $arrver[2];
}else if(isset($arrver[1])){
$integer_version = $arrver[0]*10000 + $arrver[1]*100;
}else{
$integer_version = $arrver[0];
}
return intval($integer_version);
}
版本号尽量遵循语义化版本 2.0.0 的规范
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
- 主版本号:当你做了不兼容的 API 修改,
- 次版本号:当你做了向下兼容的功能性新增,
- 修订号:当你做了向下兼容的问题修正。
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。