40 if (!function_exists(
'version_compare')) {
41 function version_compare($version1, $version2, $operator =
'<')
44 if (!is_scalar($version1)) {
45 user_error(
'version_compare() expects parameter 1 to be string, ' .
46 gettype($version1) .
' given', E_USER_WARNING);
50 if (!is_scalar($version2)) {
51 user_error(
'version_compare() expects parameter 2 to be string, ' .
52 gettype($version2) .
' given', E_USER_WARNING);
56 if (!is_scalar($operator)) {
57 user_error(
'version_compare() expects parameter 3 to be string, ' .
58 gettype($operator) .
' given', E_USER_WARNING);
64 str_replace(
'..',
'.',
65 preg_replace(
'/([^0-9\.]+)/',
'.$1.',
66 str_replace(array(
'-',
'_',
'+'),
'.',
70 str_replace(
'..',
'.',
71 preg_replace(
'/([^0-9\.]+)/',
'.$1.',
72 str_replace(array(
'-',
'_',
'+'),
'.',
76 while (
empty($v1[0]) && array_shift($v1)) {}
77 while (
empty($v2[0]) && array_shift($v2)) {}
94 for ($i = 0, $x = min(count($v1), count($v2)); $i < $x; $i++) {
95 if ($v1[$i] == $v2[$i]) {
100 if (is_numeric($i1) && is_numeric($i2)) {
101 $compare = ($i1 < $i2) ? -1 : 1;
108 } elseif (is_numeric($i1)) {
113 } elseif (is_numeric($i2)) {
116 if (isset($versions[$i1]) && isset($versions[$i2])) {
117 $compare = ($versions[$i1] < $versions[$i2]) ? -1 : 1;
118 } elseif (isset($versions[$i1])) {
120 } elseif (isset($versions[$i2])) {
131 if (count($v2) > count($v1)) {
132 if (isset($versions[$v2[$i]])) {
133 $compare = ($versions[$v2[$i]] < 4) ? 1 : -1;
137 } elseif (count($v2) < count($v1)) {
138 if (isset($versions[$v1[$i]])) {
139 $compare = ($versions[$v1[$i]] < 4) ? -1 : 1;
147 if (func_num_args() > 2) {
151 return (
bool) ($compare > 0);
155 return (
bool) ($compare >= 0);
159 return (
bool) ($compare <= 0);
164 return (
bool) ($compare == 0);
169 return (
bool) ($compare != 0);
174 return (
bool) ($compare < 0);