W3docs

strchr()

Aprende sobre la función PHP strchr(), que busca la primera aparición de una cadena dentro de otra y devuelve el resto de la cadena a partir de ese punto.

La función PHP strchr() encuentra la primera aparición de una subcadena dentro de una cadena y devuelve el resto de la cadena a partir de ese punto. A pesar de su nombre (que evoca la función strchr de C), el "needle" que se busca puede tener más de un carácter. Esta página cubre la sintaxis, el indicador opcional $before_needle, el valor de retorno false que debes comprobar y cómo se relaciona strchr() con otras funciones de cadena similares.

Sintaxis

strchr(string $haystack, string $needle, bool $before_needle = false): string|false

La función acepta tres parámetros:

  • $haystack — la cadena en la que se busca.
  • $needle — la subcadena que se busca. Si contiene más de un carácter, strchr() hace coincidir la subcadena completa.
  • $before_needle (opcional) — cuando es false (el valor predeterminado), se devuelve la parte de la cadena desde la coincidencia en adelante; cuando es true, se devuelve la parte antes de la coincidencia. Añadido en PHP 5.3.

Devuelve la porción coincidente de $haystack como una cadena, o false si no se encuentra $needle.

Ejemplo básico

php— editable, runs on the server

strchr() localiza la primera "o" en "Hello World" y devuelve el resto de la cadena comenzando desde ese carácter:

o World

Devolver la parte antes de la coincidencia

Pasa true como tercer argumento para obtener todo lo que está antes de la primera aparición:

<?php
$string = "Hello World";
$result = strchr($string, "o", true);
echo $result;
?>
Hell

Esto es útil para dividir una cadena por un delimitador — por ejemplo, obtener la parte local de una dirección de correo electrónico tomando todo lo que hay antes de "@".

Manejo del caso "no encontrado"

Cuando el needle no está presente, strchr() devuelve false, no una cadena vacía. Como false se imprime como nada, un resultado sin verificar puede producir silenciosamente una salida vacía, por lo que debes comprobarlo explícitamente:

<?php
$result = strchr("Hello World", "z");
if ($result === false) {
    echo "Not found";
} else {
    echo $result;
}
?>
Not found

Usa la comparación estricta ===: una coincidencia exitosa podría ser en sí misma la cadena "0", que == trataría como falsa.

strchr() vs. funciones relacionadas

  • strstr()strchr() es simplemente un alias de strstr(); se comportan de manera idéntica. strstr() es el nombre más utilizado.
  • strpos() — devuelve la posición entera de la primera coincidencia (o false), en lugar de la subcadena coincidente. Úsalo cuando necesites un índice para substr() u otra lógica basada en desplazamientos.
  • substr() — extrae una porción de una cadena por desplazamiento numérico y longitud, sin realizar ninguna búsqueda.
  • stristr() — la contraparte sin distinción de mayúsculas y minúsculas de strstr()/strchr().

Resumen

strchr() encuentra la primera aparición de un needle en una cadena y devuelve el resto de la cadena (o, con $before_needle establecido en true, la parte anterior a ella). Recuerda que es un alias de strstr(), que el needle puede ser una subcadena de varios caracteres, y que devuelve false — que debes comprobar con === — cuando no encuentra ninguna coincidencia.

Práctica

Práctica
¿Qué hace la función strchr() en PHP según el enlace de origen proporcionado?
¿Qué hace la función strchr() en PHP según el enlace de origen proporcionado?
Was this page helpful?