Fazer a verificação de qual a maior versão de um determinado programa, pode ser uma tarefa chata.
Poucos conhecem a função nativa de PHP version_compare que faz este trabalho. No entanto, ela só compara corretamente versões que estejam no formato padrão esperado e utilizado pelo próprio PHP para se versionar.
Mas se este padrão é seguido, esta função será capaz de resolver muitos problemas de comparação de versões (qual maior, qual menor, etc) com muita simplicidade, como em:
if (version_compare(PHP_VERSION, '6.0.0') >= 0) { echo 'Estou com a versão PHP 6.0.0 ou superior, minha versão: ' . PHP_VERSION . "\n"; } if (version_compare(PHP_VERSION, '5.3.0') >= 0) { echo 'Estou com a versão PHP 5.3.0 ou superior, minha versão: ' . PHP_VERSION . "\n"; } if (version_compare(PHP_VERSION, '5.0.0', '>=')) { echo 'Estou com a versão PHP 5 ou superior, minha versão: ' . PHP_VERSION . "\n"; } if (version_compare(PHP_VERSION, '5.0.0', '<')) { echo 'Estou com a versão PHP 4 ou superior, minha versão: ' . PHP_VERSION . "\n"; }
No entanto formatos que incompletos ou fora do padrão podem ter resultados equivocados com o uso da função nativa do PHP. Caso seja seu caso, utilize o código abaixo, que tenta na maioria dos casos solucionar este problema.
print(version_compare2('5.1', '5.1.0')); // 0 => igual print(version_compare2('5.1', '5.1.0.0')); // 0 => igual print(version_compare2('5.1.0', '5.1.0.0-alpha')); // 1 => 5.1.0.0-alpha é menor print(version_compare2('5.1.0-beta', '5.1.0.0')); // -1 => 5.1.0-beta é menor function version_compare2($ver1, $ver2, $operator = null) { $p = '#(\.0+)+($|-)#'; $ver1 = preg_replace($p, '', $ver1); $ver2 = preg_replace($p, '', $ver2); return isset($operator) ? version_compare($ver1, $ver2, $operator) : version_compare($ver1, $ver2); }