W3docs

strcasecmp()

Artículo sobre la función PHP strcasecmp(), utilizada para comparar dos cadenas sin distinción de mayúsculas y minúsculas. Sintaxis y ejemplos.

strcasecmp() es una función integrada de PHP que compara dos cadenas sin distinción de mayúsculas y minúsculas, lo que significa que "Hello" y "hello" se tratan como iguales. Realiza una comparación binaria segura y devuelve un número que indica no solo si las cadenas son diferentes, sino cuál es "mayor" en orden de bytes. Esta página cubre la sintaxis, el significado real del valor de retorno, ejemplos prácticos, errores comunes y cómo se diferencia de funciones relacionadas.

Sintaxis

strcasecmp(string $string1, string $string2): int

Recibe dos parámetros, ambos obligatorios:

  • $string1 — la primera cadena a comparar.
  • $string2 — la segunda cadena a comparar.

Valor de retorno

Esta es la parte que más confunde. strcasecmp() no devuelve true/false. Devuelve un entero:

  • 0 si las dos cadenas son iguales (ignorando mayúsculas y minúsculas).
  • Un valor menor que 0 si $string1 es "menor que" $string2.
  • Un valor mayor que 0 si $string1 es "mayor que" $string2.

La comparación se basa en los valores de byte de los caracteres (en minúsculas), por lo que el resultado también refleja el orden alfabético, lo que hace que la función sea útil como callback de ordenación.

Ejemplo básico

php— editable, runs on the server

Aquí $string1 y $string2 difieren solo en las mayúsculas, por lo que strcasecmp() devuelve 0 y la condición $result == 0 es verdadera.

La salida de este código es:

The two strings are equal.

Interpretación del signo del resultado

Cuando las cadenas no son iguales, el signo indica su orden. Tenga en cuenta que la magnitud exacta no está estandarizada entre versiones de PHP — solo el signo (negativo, cero, positivo) es significativo, por lo que siempre compare explícitamente con 0.

<?php
// "apple" comes before "Banana" alphabetically (case ignored)
var_dump(strcasecmp("apple", "Banana") < 0);   // bool(true)
var_dump(strcasecmp("Banana", "apple") > 0);   // bool(true)
var_dump(strcasecmp("PHP", "php") === 0);       // bool(true)
?>

Salida:

bool(true)
bool(true)
bool(true)

Uso práctico: comprobación de inicio de sesión sin distinción de mayúsculas

Un uso real común es comparar la entrada del usuario cuando las mayúsculas no importan, como un nombre de usuario o una respuesta sí/no.

<?php
$input = "ADMIN";
if (strcasecmp($input, "admin") === 0) {
    echo "Welcome, admin!";
} else {
    echo "Access denied.";
}
?>

Salida:

Welcome, admin!

Uso como comparador de ordenación

Dado que devuelve un entero de ordenación, strcasecmp() es un callback natural para usort() para ordenar cadenas alfabéticamente ignorando las mayúsculas.

<?php
$names = ["banana", "Apple", "cherry", "apple"];
usort($names, "strcasecmp");
print_r($names);
?>

Salida:

Array
(
    [0] => Apple
    [1] => apple
    [2] => banana
    [3] => cherry
)

Errores comunes

  • Devuelve un entero, no un boolean. Escribir if (strcasecmp($a, $b)) es un error: el bloque se ejecuta cuando las cadenas son diferentes (distinto de cero) y se omite cuando son iguales (0). Siempre compare explícitamente con === 0.
  • Es de base bytes, no compatible con Unicode. strcasecmp() solo convierte a minúsculas las letras ASCII A–Z. Los caracteres acentuados o multibyte (como É vs é) no se tratan como iguales. Para comparaciones multibyte con reconocimiento de idioma, normalice ambas cadenas primero o utilice la extensión intl.
  • Los espacios y los caracteres finales importan. strcasecmp("yes", "yes ") es distinto de cero. Elimine los espacios de la entrada con trim() cuando sea necesario.

Funciones relacionadas

  • strcmp() — el equivalente sensible a mayúsculas y minúsculas; misma semántica de retorno.
  • strncasecmp() — comparación sin distinción de mayúsculas de solo los primeros n caracteres.
  • strtolower() — convierte una cadena a minúsculas, útil antes de una comparación manual.

Resumen

strcasecmp() compara dos cadenas sin distinción de mayúsculas y devuelve 0 cuando coinciden, un número negativo cuando la primera es menor y un número positivo cuando es mayor. Recuerde comprobar el resultado contra 0 en lugar de tratarlo como un boolean, y use strcmp() cuando las mayúsculas importen.

Práctica

Práctica
¿Qué hace la función strcasecmp() en PHP?
¿Qué hace la función strcasecmp() en PHP?
Was this page helpful?