2014-01-14 45 views
0

在我的应用程序中,用户可以在输入字段中添加版本号,假设他最初添加了一个类似于1.0.1的版本号,并且他必须在下次输入更高的版本号,我如何验证它在PHP中。版本号的输入字符串的正则表达式

不同类型的版本号
1.0
1.0.1
1.01

它可以任意组合

谁能帮助我在这里?

+0

你是说你想验证新版本号输入是否比旧版本更高? – rccoros

+0

将版本保留为主版本和修订版...并从所有 – user1844933

+0

中选择最大值是我想验证新版本号输入是否高于旧版本号。 –

回答

0

你可以试试这个。

$version="1.0.1.1"; 
$versionnew="1.0.1.0"; 

//explode the version to be able to compare each and every part of the version 
$versionArray = explode(".",$version); 
$versionnewArray = explode(".",$versionnew); 

//the maximum depth of comparison 
$limit = min(count($versionArray),count($versionnewArray)); 

for($i=0;$i<$limit;$i++){ 
    if($versionArray[$i] == $versionnewArray[$i]){ 
     continue; 
    }else if($versionArray[$i] > $versionnewArray[$i]){ 
     echo $versionnew . " should be newer than " . $version; 
    }else echo $versionnew . " is newer than " . $version; 
} 
+0

适用于我,谢谢+1 –

0

这可以帮助你得到持续

$newVersion= "1.2"; //get a string reference to your version here 
$oldVersion = "1.3";  
$piecesNew = explode(".", $newVersion); //This will give you an array existing of [1,2] 
$piecesOld = explode(".", $oldVersion); //This will give you an array existing of [1,3] 
//Do some checking here for each number 
+1

是的,这将解决我的问题在一个扩展,但如果版本号是像1.0.1或1.0.0.1或1,等等...我需要一个通用的方式来处理它。 –

+0

为此,您需要一些if else语句。首先,您可以检查两个数组是否具有相同的长度。如果这样比较它们,如果没有比较它们,并且如果它们相等,则必须设置新件的最后位置 –