Una de las maneras mas sencillas de comparar 2 cadenas con PHP es mediante strcmp. La comparación entre las 2 cadenas se realiza de manera binaria y es sensible a mayúsculas y minúsculas.
Uso:
int strcmp(string1, string2);
Valores devueltos:
< 0 si string1 es menor que string2, >0 si string1 es mayor que string2 y 0 si son iguales.
Mucho cuidado con:
Una de las cosas con las que hay que tener cuidado a la hora de usar el strcmp es que cuando las 2 cadenas son iguales devuelve 0. Veamos el siguiente ejemplo:
$string1 = "Hola"; $string2 = "Hola"; $string3 = "Adios"; if (strcmp($string1, $string2)) { echo "Las cadenas son iguales"; } else { echo "Las cadenas no son iguales"; } // Esto devolvera "Las cadenas no son iguales"; if (strcmp($string1, $string3)) { echo "Las cadenas son iguales"; } else { echo "Las cadenas no son iguales"; } // Esto devolverá "Las cadenas son iguales";
En el ejemplo anterior al comparar dos cadenas iguales nos dice que no son iguales y si comparamos dos distintas nos dicen que son iguales, esto es debido a que strcmp devuelve un numero que es 0 cuando son iguales, el cual se interpreta dentro del if como falso, y cuando son distintas devuelve un numero que no es 0 el cual es interpretado como verdadero.
El uso adecuado dentro de un if del strcmp es:
$string1 = "Hola"; $string2 = "Hola"; $string3 = "Adios"; if (strcmp($string1, $string2) === 0) { echo "Las cadenas son iguales"; } else { echo "Las cadenas no son iguales"; } // Ahora si devolvera que las cadenas son iguales
Mas información: http://us1.php.net/manual/es/function.strcmp.php