¿Cómo comparar dos cadenas en formato de versión? tal que:
version_compare("2.5.1", "2.5.2") => -1 (smaller)
version_compare("2.5.2", "2.5.2") => 0 (equal)
version_compare("2.5.5", "2.5.2") => 1 (bigger)
version_compare("2.5.11", "2.5.2") => 1 (bigger, eleven is bigger than two)
Desde el indicador interactivo de PHP usando el version_compare
función, integrada en PHP desde 4.1:
php > print_r(version_compare("2.5.1", "2.5.2")); // expect -1
-1
php > print_r(version_compare("2.5.2", "2.5.2")); // expect 0
0
php > print_r(version_compare("2.5.5", "2.5.2")); // expect 1
1
php > print_r(version_compare("2.5.11", "2.5.2")); // expect 1
1
Parece que PHP ya funciona como esperas. Si encuentra un comportamiento diferente, tal vez debería especificarlo.
Probablemente “orden natural”has probado php.net/strnatcmp ?
– hakré
28 de diciembre de 2012 a las 9:59
¿Qué hay de malo con la función incorporada de php?
version_compare
?– DCoder
28 de diciembre de 2012 a las 10:00
Prueba tu código antes de preguntar. Podría funcionar (como en tu caso). -1 por eso.
– hakré
28 de diciembre de 2012 a las 10:02
@hakre, lo siento, no me di cuenta de que en realidad hay un
version_compare
función en PHP … ystrnatcmp
también funciona– Oh ho
28 de diciembre de 2012 a las 10:13
@hakre, mi culpa. Busqué en Google todo
strcmp
pero… Es mi culpa.– Oh ho
28 de diciembre de 2012 a las 10:19