Blame | Letzte Änderung | Log anzeigen | RSS feed
--TEST--Function -- version_compare--SKIPIF--<?php if (function_exists('version_compare')) { echo 'skip'; } ?>--FILE--<?phprequire_once 'PHP/Compat.php';PHP_Compat::loadFunction('version_compare');// Basicprint "testing basic\n";test('1', '2');test('10', '2');test('1.0', '1.1');test('1.2', '1.0.1');test('1.2.p3', '1.2.4');test('1.2.y', '1.2.z');// Comparisonsprint "testing compare\n";$special_forms = array("-dev", "a1", "b1", "RC1", "", "pl1");$operators = array("lt", "<","le", "<=","gt", ">","ge", ">=","eq", "=", "==","ne", "<>", "!=");foreach ($special_forms as $f1) {foreach ($special_forms as $f2) {test("1.0$f1", "1.0$f2");}}// Operatorsprint "testing operators\n";foreach ($special_forms as $f1) {foreach ($special_forms as $f2) {foreach ($operators as $op) {$v1 = "1.0$f1";$v2 = "1.0$f2";$test = version_compare($v1, $v2, $op) ? "true" : "false";printf("%7s %2s %-7s : %s\n", $v1, $op, $v2, $test);}}}function test($v1, $v2) {$compare = version_compare($v1, $v2);switch ($compare) {case -1:print "$v1 < $v2\n";break;case 1:print "$v1 > $v2\n";break;case 0:default:print "$v1 = $v2\n";break;}}?>testing basic1 < 210 > 21.0 < 1.11.2 > 1.0.11.2.p3 > 1.2.41.2.y = 1.2.ztesting compare1.0-dev = 1.0-dev1.0-dev < 1.0a11.0-dev < 1.0b11.0-dev < 1.0RC11.0-dev < 1.01.0-dev < 1.0pl11.0a1 > 1.0-dev1.0a1 = 1.0a11.0a1 < 1.0b11.0a1 < 1.0RC11.0a1 < 1.01.0a1 < 1.0pl11.0b1 > 1.0-dev1.0b1 > 1.0a11.0b1 = 1.0b11.0b1 < 1.0RC11.0b1 < 1.01.0b1 < 1.0pl11.0RC1 > 1.0-dev1.0RC1 > 1.0a11.0RC1 > 1.0b11.0RC1 = 1.0RC11.0RC1 < 1.01.0RC1 < 1.0pl11.0 > 1.0-dev1.0 > 1.0a11.0 > 1.0b11.0 > 1.0RC11.0 = 1.01.0 < 1.0pl11.0pl1 > 1.0-dev1.0pl1 > 1.0a11.0pl1 > 1.0b11.0pl1 > 1.0RC11.0pl1 > 1.01.0pl1 = 1.0pl1testing operators1.0-dev lt 1.0-dev : false1.0-dev < 1.0-dev : false1.0-dev le 1.0-dev : true1.0-dev <= 1.0-dev : true1.0-dev gt 1.0-dev : false1.0-dev > 1.0-dev : false1.0-dev ge 1.0-dev : true1.0-dev >= 1.0-dev : true1.0-dev eq 1.0-dev : true1.0-dev = 1.0-dev : true1.0-dev == 1.0-dev : true1.0-dev ne 1.0-dev : false1.0-dev <> 1.0-dev : false1.0-dev != 1.0-dev : false1.0-dev lt 1.0a1 : true1.0-dev < 1.0a1 : true1.0-dev le 1.0a1 : true1.0-dev <= 1.0a1 : true1.0-dev gt 1.0a1 : false1.0-dev > 1.0a1 : false1.0-dev ge 1.0a1 : false1.0-dev >= 1.0a1 : false1.0-dev eq 1.0a1 : false1.0-dev = 1.0a1 : false1.0-dev == 1.0a1 : false1.0-dev ne 1.0a1 : true1.0-dev <> 1.0a1 : true1.0-dev != 1.0a1 : true1.0-dev lt 1.0b1 : true1.0-dev < 1.0b1 : true1.0-dev le 1.0b1 : true1.0-dev <= 1.0b1 : true1.0-dev gt 1.0b1 : false1.0-dev > 1.0b1 : false1.0-dev ge 1.0b1 : false1.0-dev >= 1.0b1 : false1.0-dev eq 1.0b1 : false1.0-dev = 1.0b1 : false1.0-dev == 1.0b1 : false1.0-dev ne 1.0b1 : true1.0-dev <> 1.0b1 : true1.0-dev != 1.0b1 : true1.0-dev lt 1.0RC1 : true1.0-dev < 1.0RC1 : true1.0-dev le 1.0RC1 : true1.0-dev <= 1.0RC1 : true1.0-dev gt 1.0RC1 : false1.0-dev > 1.0RC1 : false1.0-dev ge 1.0RC1 : false1.0-dev >= 1.0RC1 : false1.0-dev eq 1.0RC1 : false1.0-dev = 1.0RC1 : false1.0-dev == 1.0RC1 : false1.0-dev ne 1.0RC1 : true1.0-dev <> 1.0RC1 : true1.0-dev != 1.0RC1 : true1.0-dev lt 1.0 : true1.0-dev < 1.0 : true1.0-dev le 1.0 : true1.0-dev <= 1.0 : true1.0-dev gt 1.0 : false1.0-dev > 1.0 : false1.0-dev ge 1.0 : false1.0-dev >= 1.0 : false1.0-dev eq 1.0 : false1.0-dev = 1.0 : false1.0-dev == 1.0 : false1.0-dev ne 1.0 : true1.0-dev <> 1.0 : true1.0-dev != 1.0 : true1.0-dev lt 1.0pl1 : true1.0-dev < 1.0pl1 : true1.0-dev le 1.0pl1 : true1.0-dev <= 1.0pl1 : true1.0-dev gt 1.0pl1 : false1.0-dev > 1.0pl1 : false1.0-dev ge 1.0pl1 : false1.0-dev >= 1.0pl1 : false1.0-dev eq 1.0pl1 : false1.0-dev = 1.0pl1 : false1.0-dev == 1.0pl1 : false1.0-dev ne 1.0pl1 : true1.0-dev <> 1.0pl1 : true1.0-dev != 1.0pl1 : true1.0a1 lt 1.0-dev : false1.0a1 < 1.0-dev : false1.0a1 le 1.0-dev : false1.0a1 <= 1.0-dev : false1.0a1 gt 1.0-dev : true1.0a1 > 1.0-dev : true1.0a1 ge 1.0-dev : true1.0a1 >= 1.0-dev : true1.0a1 eq 1.0-dev : false1.0a1 = 1.0-dev : false1.0a1 == 1.0-dev : false1.0a1 ne 1.0-dev : true1.0a1 <> 1.0-dev : true1.0a1 != 1.0-dev : true1.0a1 lt 1.0a1 : false1.0a1 < 1.0a1 : false1.0a1 le 1.0a1 : true1.0a1 <= 1.0a1 : true1.0a1 gt 1.0a1 : false1.0a1 > 1.0a1 : false1.0a1 ge 1.0a1 : true1.0a1 >= 1.0a1 : true1.0a1 eq 1.0a1 : true1.0a1 = 1.0a1 : true1.0a1 == 1.0a1 : true1.0a1 ne 1.0a1 : false1.0a1 <> 1.0a1 : false1.0a1 != 1.0a1 : false1.0a1 lt 1.0b1 : true1.0a1 < 1.0b1 : true1.0a1 le 1.0b1 : true1.0a1 <= 1.0b1 : true1.0a1 gt 1.0b1 : false1.0a1 > 1.0b1 : false1.0a1 ge 1.0b1 : false1.0a1 >= 1.0b1 : false1.0a1 eq 1.0b1 : false1.0a1 = 1.0b1 : false1.0a1 == 1.0b1 : false1.0a1 ne 1.0b1 : true1.0a1 <> 1.0b1 : true1.0a1 != 1.0b1 : true1.0a1 lt 1.0RC1 : true1.0a1 < 1.0RC1 : true1.0a1 le 1.0RC1 : true1.0a1 <= 1.0RC1 : true1.0a1 gt 1.0RC1 : false1.0a1 > 1.0RC1 : false1.0a1 ge 1.0RC1 : false1.0a1 >= 1.0RC1 : false1.0a1 eq 1.0RC1 : false1.0a1 = 1.0RC1 : false1.0a1 == 1.0RC1 : false1.0a1 ne 1.0RC1 : true1.0a1 <> 1.0RC1 : true1.0a1 != 1.0RC1 : true1.0a1 lt 1.0 : true1.0a1 < 1.0 : true1.0a1 le 1.0 : true1.0a1 <= 1.0 : true1.0a1 gt 1.0 : false1.0a1 > 1.0 : false1.0a1 ge 1.0 : false1.0a1 >= 1.0 : false1.0a1 eq 1.0 : false1.0a1 = 1.0 : false1.0a1 == 1.0 : false1.0a1 ne 1.0 : true1.0a1 <> 1.0 : true1.0a1 != 1.0 : true1.0a1 lt 1.0pl1 : true1.0a1 < 1.0pl1 : true1.0a1 le 1.0pl1 : true1.0a1 <= 1.0pl1 : true1.0a1 gt 1.0pl1 : false1.0a1 > 1.0pl1 : false1.0a1 ge 1.0pl1 : false1.0a1 >= 1.0pl1 : false1.0a1 eq 1.0pl1 : false1.0a1 = 1.0pl1 : false1.0a1 == 1.0pl1 : false1.0a1 ne 1.0pl1 : true1.0a1 <> 1.0pl1 : true1.0a1 != 1.0pl1 : true1.0b1 lt 1.0-dev : false1.0b1 < 1.0-dev : false1.0b1 le 1.0-dev : false1.0b1 <= 1.0-dev : false1.0b1 gt 1.0-dev : true1.0b1 > 1.0-dev : true1.0b1 ge 1.0-dev : true1.0b1 >= 1.0-dev : true1.0b1 eq 1.0-dev : false1.0b1 = 1.0-dev : false1.0b1 == 1.0-dev : false1.0b1 ne 1.0-dev : true1.0b1 <> 1.0-dev : true1.0b1 != 1.0-dev : true1.0b1 lt 1.0a1 : false1.0b1 < 1.0a1 : false1.0b1 le 1.0a1 : false1.0b1 <= 1.0a1 : false1.0b1 gt 1.0a1 : true1.0b1 > 1.0a1 : true1.0b1 ge 1.0a1 : true1.0b1 >= 1.0a1 : true1.0b1 eq 1.0a1 : false1.0b1 = 1.0a1 : false1.0b1 == 1.0a1 : false1.0b1 ne 1.0a1 : true1.0b1 <> 1.0a1 : true1.0b1 != 1.0a1 : true1.0b1 lt 1.0b1 : false1.0b1 < 1.0b1 : false1.0b1 le 1.0b1 : true1.0b1 <= 1.0b1 : true1.0b1 gt 1.0b1 : false1.0b1 > 1.0b1 : false1.0b1 ge 1.0b1 : true1.0b1 >= 1.0b1 : true1.0b1 eq 1.0b1 : true1.0b1 = 1.0b1 : true1.0b1 == 1.0b1 : true1.0b1 ne 1.0b1 : false1.0b1 <> 1.0b1 : false1.0b1 != 1.0b1 : false1.0b1 lt 1.0RC1 : true1.0b1 < 1.0RC1 : true1.0b1 le 1.0RC1 : true1.0b1 <= 1.0RC1 : true1.0b1 gt 1.0RC1 : false1.0b1 > 1.0RC1 : false1.0b1 ge 1.0RC1 : false1.0b1 >= 1.0RC1 : false1.0b1 eq 1.0RC1 : false1.0b1 = 1.0RC1 : false1.0b1 == 1.0RC1 : false1.0b1 ne 1.0RC1 : true1.0b1 <> 1.0RC1 : true1.0b1 != 1.0RC1 : true1.0b1 lt 1.0 : true1.0b1 < 1.0 : true1.0b1 le 1.0 : true1.0b1 <= 1.0 : true1.0b1 gt 1.0 : false1.0b1 > 1.0 : false1.0b1 ge 1.0 : false1.0b1 >= 1.0 : false1.0b1 eq 1.0 : false1.0b1 = 1.0 : false1.0b1 == 1.0 : false1.0b1 ne 1.0 : true1.0b1 <> 1.0 : true1.0b1 != 1.0 : true1.0b1 lt 1.0pl1 : true1.0b1 < 1.0pl1 : true1.0b1 le 1.0pl1 : true1.0b1 <= 1.0pl1 : true1.0b1 gt 1.0pl1 : false1.0b1 > 1.0pl1 : false1.0b1 ge 1.0pl1 : false1.0b1 >= 1.0pl1 : false1.0b1 eq 1.0pl1 : false1.0b1 = 1.0pl1 : false1.0b1 == 1.0pl1 : false1.0b1 ne 1.0pl1 : true1.0b1 <> 1.0pl1 : true1.0b1 != 1.0pl1 : true1.0RC1 lt 1.0-dev : false1.0RC1 < 1.0-dev : false1.0RC1 le 1.0-dev : false1.0RC1 <= 1.0-dev : false1.0RC1 gt 1.0-dev : true1.0RC1 > 1.0-dev : true1.0RC1 ge 1.0-dev : true1.0RC1 >= 1.0-dev : true1.0RC1 eq 1.0-dev : false1.0RC1 = 1.0-dev : false1.0RC1 == 1.0-dev : false1.0RC1 ne 1.0-dev : true1.0RC1 <> 1.0-dev : true1.0RC1 != 1.0-dev : true1.0RC1 lt 1.0a1 : false1.0RC1 < 1.0a1 : false1.0RC1 le 1.0a1 : false1.0RC1 <= 1.0a1 : false1.0RC1 gt 1.0a1 : true1.0RC1 > 1.0a1 : true1.0RC1 ge 1.0a1 : true1.0RC1 >= 1.0a1 : true1.0RC1 eq 1.0a1 : false1.0RC1 = 1.0a1 : false1.0RC1 == 1.0a1 : false1.0RC1 ne 1.0a1 : true1.0RC1 <> 1.0a1 : true1.0RC1 != 1.0a1 : true1.0RC1 lt 1.0b1 : false1.0RC1 < 1.0b1 : false1.0RC1 le 1.0b1 : false1.0RC1 <= 1.0b1 : false1.0RC1 gt 1.0b1 : true1.0RC1 > 1.0b1 : true1.0RC1 ge 1.0b1 : true1.0RC1 >= 1.0b1 : true1.0RC1 eq 1.0b1 : false1.0RC1 = 1.0b1 : false1.0RC1 == 1.0b1 : false1.0RC1 ne 1.0b1 : true1.0RC1 <> 1.0b1 : true1.0RC1 != 1.0b1 : true1.0RC1 lt 1.0RC1 : false1.0RC1 < 1.0RC1 : false1.0RC1 le 1.0RC1 : true1.0RC1 <= 1.0RC1 : true1.0RC1 gt 1.0RC1 : false1.0RC1 > 1.0RC1 : false1.0RC1 ge 1.0RC1 : true1.0RC1 >= 1.0RC1 : true1.0RC1 eq 1.0RC1 : true1.0RC1 = 1.0RC1 : true1.0RC1 == 1.0RC1 : true1.0RC1 ne 1.0RC1 : false1.0RC1 <> 1.0RC1 : false1.0RC1 != 1.0RC1 : false1.0RC1 lt 1.0 : true1.0RC1 < 1.0 : true1.0RC1 le 1.0 : true1.0RC1 <= 1.0 : true1.0RC1 gt 1.0 : false1.0RC1 > 1.0 : false1.0RC1 ge 1.0 : false1.0RC1 >= 1.0 : false1.0RC1 eq 1.0 : false1.0RC1 = 1.0 : false1.0RC1 == 1.0 : false1.0RC1 ne 1.0 : true1.0RC1 <> 1.0 : true1.0RC1 != 1.0 : true1.0RC1 lt 1.0pl1 : true1.0RC1 < 1.0pl1 : true1.0RC1 le 1.0pl1 : true1.0RC1 <= 1.0pl1 : true1.0RC1 gt 1.0pl1 : false1.0RC1 > 1.0pl1 : false1.0RC1 ge 1.0pl1 : false1.0RC1 >= 1.0pl1 : false1.0RC1 eq 1.0pl1 : false1.0RC1 = 1.0pl1 : false1.0RC1 == 1.0pl1 : false1.0RC1 ne 1.0pl1 : true1.0RC1 <> 1.0pl1 : true1.0RC1 != 1.0pl1 : true1.0 lt 1.0-dev : false1.0 < 1.0-dev : false1.0 le 1.0-dev : false1.0 <= 1.0-dev : false1.0 gt 1.0-dev : true1.0 > 1.0-dev : true1.0 ge 1.0-dev : true1.0 >= 1.0-dev : true1.0 eq 1.0-dev : false1.0 = 1.0-dev : false1.0 == 1.0-dev : false1.0 ne 1.0-dev : true1.0 <> 1.0-dev : true1.0 != 1.0-dev : true1.0 lt 1.0a1 : false1.0 < 1.0a1 : false1.0 le 1.0a1 : false1.0 <= 1.0a1 : false1.0 gt 1.0a1 : true1.0 > 1.0a1 : true1.0 ge 1.0a1 : true1.0 >= 1.0a1 : true1.0 eq 1.0a1 : false1.0 = 1.0a1 : false1.0 == 1.0a1 : false1.0 ne 1.0a1 : true1.0 <> 1.0a1 : true1.0 != 1.0a1 : true1.0 lt 1.0b1 : false1.0 < 1.0b1 : false1.0 le 1.0b1 : false1.0 <= 1.0b1 : false1.0 gt 1.0b1 : true1.0 > 1.0b1 : true1.0 ge 1.0b1 : true1.0 >= 1.0b1 : true1.0 eq 1.0b1 : false1.0 = 1.0b1 : false1.0 == 1.0b1 : false1.0 ne 1.0b1 : true1.0 <> 1.0b1 : true1.0 != 1.0b1 : true1.0 lt 1.0RC1 : false1.0 < 1.0RC1 : false1.0 le 1.0RC1 : false1.0 <= 1.0RC1 : false1.0 gt 1.0RC1 : true1.0 > 1.0RC1 : true1.0 ge 1.0RC1 : true1.0 >= 1.0RC1 : true1.0 eq 1.0RC1 : false1.0 = 1.0RC1 : false1.0 == 1.0RC1 : false1.0 ne 1.0RC1 : true1.0 <> 1.0RC1 : true1.0 != 1.0RC1 : true1.0 lt 1.0 : false1.0 < 1.0 : false1.0 le 1.0 : true1.0 <= 1.0 : true1.0 gt 1.0 : false1.0 > 1.0 : false1.0 ge 1.0 : true1.0 >= 1.0 : true1.0 eq 1.0 : true1.0 = 1.0 : true1.0 == 1.0 : true1.0 ne 1.0 : false1.0 <> 1.0 : false1.0 != 1.0 : false1.0 lt 1.0pl1 : true1.0 < 1.0pl1 : true1.0 le 1.0pl1 : true1.0 <= 1.0pl1 : true1.0 gt 1.0pl1 : false1.0 > 1.0pl1 : false1.0 ge 1.0pl1 : false1.0 >= 1.0pl1 : false1.0 eq 1.0pl1 : false1.0 = 1.0pl1 : false1.0 == 1.0pl1 : false1.0 ne 1.0pl1 : true1.0 <> 1.0pl1 : true1.0 != 1.0pl1 : true1.0pl1 lt 1.0-dev : false1.0pl1 < 1.0-dev : false1.0pl1 le 1.0-dev : false1.0pl1 <= 1.0-dev : false1.0pl1 gt 1.0-dev : true1.0pl1 > 1.0-dev : true1.0pl1 ge 1.0-dev : true1.0pl1 >= 1.0-dev : true1.0pl1 eq 1.0-dev : false1.0pl1 = 1.0-dev : false1.0pl1 == 1.0-dev : false1.0pl1 ne 1.0-dev : true1.0pl1 <> 1.0-dev : true1.0pl1 != 1.0-dev : true1.0pl1 lt 1.0a1 : false1.0pl1 < 1.0a1 : false1.0pl1 le 1.0a1 : false1.0pl1 <= 1.0a1 : false1.0pl1 gt 1.0a1 : true1.0pl1 > 1.0a1 : true1.0pl1 ge 1.0a1 : true1.0pl1 >= 1.0a1 : true1.0pl1 eq 1.0a1 : false1.0pl1 = 1.0a1 : false1.0pl1 == 1.0a1 : false1.0pl1 ne 1.0a1 : true1.0pl1 <> 1.0a1 : true1.0pl1 != 1.0a1 : true1.0pl1 lt 1.0b1 : false1.0pl1 < 1.0b1 : false1.0pl1 le 1.0b1 : false1.0pl1 <= 1.0b1 : false1.0pl1 gt 1.0b1 : true1.0pl1 > 1.0b1 : true1.0pl1 ge 1.0b1 : true1.0pl1 >= 1.0b1 : true1.0pl1 eq 1.0b1 : false1.0pl1 = 1.0b1 : false1.0pl1 == 1.0b1 : false1.0pl1 ne 1.0b1 : true1.0pl1 <> 1.0b1 : true1.0pl1 != 1.0b1 : true1.0pl1 lt 1.0RC1 : false1.0pl1 < 1.0RC1 : false1.0pl1 le 1.0RC1 : false1.0pl1 <= 1.0RC1 : false1.0pl1 gt 1.0RC1 : true1.0pl1 > 1.0RC1 : true1.0pl1 ge 1.0RC1 : true1.0pl1 >= 1.0RC1 : true1.0pl1 eq 1.0RC1 : false1.0pl1 = 1.0RC1 : false1.0pl1 == 1.0RC1 : false1.0pl1 ne 1.0RC1 : true1.0pl1 <> 1.0RC1 : true1.0pl1 != 1.0RC1 : true1.0pl1 lt 1.0 : false1.0pl1 < 1.0 : false1.0pl1 le 1.0 : false1.0pl1 <= 1.0 : false1.0pl1 gt 1.0 : true1.0pl1 > 1.0 : true1.0pl1 ge 1.0 : true1.0pl1 >= 1.0 : true1.0pl1 eq 1.0 : false1.0pl1 = 1.0 : false1.0pl1 == 1.0 : false1.0pl1 ne 1.0 : true1.0pl1 <> 1.0 : true1.0pl1 != 1.0 : true1.0pl1 lt 1.0pl1 : false1.0pl1 < 1.0pl1 : false1.0pl1 le 1.0pl1 : true1.0pl1 <= 1.0pl1 : true1.0pl1 gt 1.0pl1 : false1.0pl1 > 1.0pl1 : false1.0pl1 ge 1.0pl1 : true1.0pl1 >= 1.0pl1 : true1.0pl1 eq 1.0pl1 : true1.0pl1 = 1.0pl1 : true1.0pl1 == 1.0pl1 : true1.0pl1 ne 1.0pl1 : false1.0pl1 <> 1.0pl1 : false1.0pl1 != 1.0pl1 : false