php 版本处理类
例如记录app版本,或某些版本数据,如果使用1.0.0这种版本格式记录入库,在需要筛选查询时会比较麻烦。
而把版本字符串转为数字保存,可以方便版本间的比较和筛选。
例如:要查询3.0.1 与 10.0.1之间的版本,因为3.0.1比10.0.1大(字符串比较),因此需要处理才可以查询。
而把 3.0.1 和 10.0.1 先转为数字 30001 和 100001来比较查询,则很方便。
Version.class.php
* 版本处理类,提供版本与数字互相转换,方便入库后进行比较筛选
* Date: 2015-06-30
* Author: fdipzone
* ver: 1.0
*
* Func:
* public version_to_integer 将版本转为数字
* public integer_to_version 将数字转为版本
* public check 检查版本格式是否正确
* public compare 比较两个版本的值
*/class Version{ // class start
/**
* 将版本转为数字
* @param String $version 版本
* @return Int
*/
public function version_to_integer($version){
if($this->check($version)){ list($major, $minor, $sub) = explode('.', $version); $integer_version = $major*10000 + $minor*100 + $sub; return intval($integer_version);
}else{ throw new ErrorException('version Validate Error');
}
} /**
* 将数字转为版本
* @param Int $version_code 版本的数字表示
* @return String
*/
public function integer_to_version($version_code){
if(is_numeric($version_code) && $version_code>=10000){ $version = array(); $version[0] = (int)($version_code/10000); $version[1] = (int)($version_code%10000/100); $version[2] = $version_code%100; return implode('.', $version);
}else{ throw new ErrorException('version code Validate Error');
}
} /**
* 检查版本格式是否正确
* @param String $version 版本
* @return Boolean
*/
public function check($version){
$ret = preg_match('/^[0-9]{1,3}\.[0-9]{1,2}\.[0-9]{1,2}$/', $version); return $ret? true : false;
} /**
* 比较两个版本的值
* @param String $version1 版本1
* @param String $version2 版本2
* @return Int -1:1<2, 0:相等, 1:1>2
*/
public function compare($version1, $version2){
if($this->check($version1) && $this->check($version2)){ $version1_code = $this->version_to_integer($version1); $version2_code = $this->version_to_integer($version2); if($version1_code>$version2_code){ return 1;
}elseif($version1_code
}else{ return 0;
}
}else{ throw new ErrorException('version1 or version2 Validate Error');
}
}
} // class end?>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
demo.php
<?phprequire 'Version.class.php';$version = '2.7.1';$obj = new Version();// 版本转数字$version_code = $obj->version_to_integer($version);echo $version_code.'
'; // 20701// 数字转版本$version = $obj->integer_to_version($version_code);echo $version.'
'; // 2.7.1// 检查版本$version = '1.1.a';
var_dump($obj->check($version)); // false// 比较两个版本$version1 = '2.9.9';$version2 = '10.0.1';$result = $obj->compare($version1, $version2);echo $result; // -1?>1234567891011121314151617181920212223242526
源码下载地址:点击查看
//只在IE下有作用,其他浏览器均获取的为第一个单选框的值
//$('input[type=radio]').val();
//兼容所有浏览器写法
var sex = $('input[type=radio]:checked').val();