Compara dos cadenas de versión en PHP

1 minuto de lectura

avatar de usuario
Oh ho

¿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)

  • 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 … y strnatcmp también funciona

    – Oh ho

    28 de diciembre de 2012 a las 10:13


  • @hakre, mi culpa. Busqué en Google todo strcmppero… Es mi culpa.

    – Oh ho

    28 de diciembre de 2012 a las 10:19

avatar de usuario
Charles

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.

  • Puede confirmar. Simplemente funciona. TODAS las versiones de PHP. 3v4l.org/U0mvm#v430 Lo mismo para la comparación de orden natural.

    – hakré

    28 de diciembre de 2012 a las 10:02


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad