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);
}




