W3docs

stristr()

La función stristr() en PHP busca la primera ocurrencia de una subcadena en una cadena sin distinguir mayúsculas de minúsculas y devuelve la porción desde ese punto.

Introducción

stristr() es una función de cadenas de PHP que encuentra la primera ocurrencia de una subcadena dentro de una cadena, ignorando las mayúsculas y minúsculas, y devuelve todo desde ese punto hasta el final de la cadena. Si no se encuentra la subcadena, devuelve false.

Es la contraparte sin distinción de mayúsculas de strstr(). Usa stristr() cuando la búsqueda deba tratar Hello, HELLO y hello como lo mismo — por ejemplo, al buscar palabras clave introducidas por el usuario, analizar una dirección de correo electrónico o dividir una cadena por un marcador independientemente de las mayúsculas.

Esta página cubre la sintaxis, el valor de retorno, el modificador opcional $before_needle, los errores comunes y cómo difiere stristr() de las funciones relacionadas.

Sintaxis

stristr(string $haystack, string $needle, bool $before_needle = false): string|false
ParámetroDescripción
$haystackLa cadena en la que se busca.
$needleLa subcadena a buscar. La coincidencia es sin distinción de mayúsculas.
$before_needleOpcional. Si es true, devuelve la parte de $haystack antes de la primera coincidencia en lugar de después.

Valor de retorno: la porción coincidente de $haystack (se conserva su mayúscula/minúscula original, no se convierte a minúsculas), o false si $needle no aparece.

Ejemplo básico

php— editable, runs on the server

Aunque buscamos "BROWN" en mayúsculas, stristr() encontró la brown en minúsculas dentro de la cadena y devolvió el resto de la oración a partir de esa palabra, conservando las mayúsculas y minúsculas originales.

Obtener la parte anterior a la coincidencia

Pasa true como tercer argumento para obtener todo lo que está antes de la primera coincidencia. Esto es útil para dividir una cadena por un delimitador, como extraer la parte del usuario de una dirección de correo electrónico:

<?php

$email = "[email protected]";

$after  = stristr($email, "@");        // from "@" onward
$before = stristr($email, "@", true);  // up to (not including) "@"

echo $after . "\n";   // @Example.com
echo $before . "\n";  // User

Verificar si existe una subcadena

Un error común es usar stristr() como prueba booleana. Funciona, pero debes comparar contra false con el operador estricto !==, porque la cadena devuelta puede ser en sí misma falsa (por ejemplo "0"):

<?php

$text = "Contact us at [email protected]";

if (stristr($text, "support") !== false) {
  echo "Contains 'support' (any case)";
} else {
  echo "Not found";
}
// Output: Contains 'support' (any case)

Si solo necesitas saber si existe una subcadena — y no necesitas la porción coincidente — prefiere stripos() (posición sin distinción de mayúsculas) o strpos() (posición con distinción de mayúsculas). Devuelven el índice de la coincidencia y son ligeramente más rápidas porque no copian el resto de la cadena.

stristr() vs. funciones relacionadas

Función¿Distingue mayúsculas?Devuelve
stristr()NoSubcadena coincidente (o false)
strstr()Subcadena coincidente (o false)
stripos()NoÍndice de posición (o false)
strpos()Índice de posición (o false)

Usa stristr() cuando quieras el texto desde la coincidencia en adelante y se deba ignorar las mayúsculas. Usa stripos()/strpos() cuando solo necesites la posición o una respuesta de sí/no.

Notas y advertencias

  • false vs. cadena vacía. Una coincidencia exitosa nunca devuelve una cadena vacía al principio, pero una coincidencia al final de $haystack devuelve solo el needle. Siempre comprueba con !== false.
  • Las mayúsculas solo se ignoran en la búsqueda. La subcadena devuelta conserva las mayúsculas y minúsculas del $haystack original.
  • Texto multibyte/UTF-8. stristr() opera sobre bytes. Para una búsqueda sin distinción de mayúsculas fiable con caracteres acentuados o no latinos, usa mb_stristr() de la extensión mbstring.
  • $needle no string. A partir de PHP 8.0, $needle siempre se trata como una cadena. En versiones anteriores, un needle que no era string se interpretaba como su código de carácter ASCII.

Conclusión

stristr() devuelve la porción de una cadena desde la primera coincidencia sin distinción de mayúsculas de una subcadena en adelante, o false si no hay coincidencia — y con $before_needle en true, la porción anterior a la coincidencia. Úsala cuando necesites el texto coincidente independientemente de las mayúsculas; usa stripos() o strpos() cuando solo necesites una posición o verificar la presencia.

Práctica

Práctica
¿Qué hace la función 'stristr' en PHP?
¿Qué hace la función 'stristr' en PHP?
Was this page helpful?