W3docs

strpbrk()

La función strpbrk() en PHP busca en una cadena cualquiera de un conjunto de caracteres y devuelve la porción de la cadena a partir de la primera coincidencia.

Introducción

La función strpbrk() en PHP busca en una cadena cualquiera de un conjunto de caracteres y devuelve el resto de la cadena a partir de la primera coincidencia. El nombre proviene de "string pointer break" — recorre el haystack de izquierda a derecha y se detiene (rompe) en el momento en que encuentra un carácter que aparece en el conjunto de búsqueda.

Esto la hace útil para tareas como "dame todo a partir del primer @, = o ? en adelante" sin necesidad de escribir una expresión regular. Este artículo cubre la sintaxis, los valores de retorno, un error común sobre cómo se elige la coincidencia y casos de uso prácticos.

Sintaxis

strpbrk(string $haystack, string $char_list): string|false
ParámetroDescripción
$haystackLa cadena en la que se busca.
$char_listUna cadena que lista los caracteres a buscar. Cada carácter se trata individualmente"abc" significa "cualquiera de a, b o c", no la subcadena "abc".

Valor de retorno: la porción de $haystack desde el primer carácter coincidente hasta el final de la cadena. Si ninguno de los caracteres de $char_list está presente, devuelve false.

strpbrk() es sensible a mayúsculas y minúsculas: buscar "A" no coincidirá con una a en minúscula.

Ejemplo básico

php— editable, runs on the server

Salida:

Found 'llo World' in 'Hello World'

Una sorpresa habitual aquí: el resultado es llo World, no World. La función devuelve a partir del primer carácter coincidente que encuentra al escanear de izquierda a derecha. Aunque W está en la lista de búsqueda, la l en minúscula de "Hello" aparece antes en la cadena, por lo que el fragmento comienza allí. El orden en $char_list no importa — solo importa la posición en el haystack.

La coincidencia es posicional, no basada en el orden de la lista

Es fácil suponer que strpbrk() respeta el orden de los caracteres que se pasan. No lo hace — devuelve a partir del carácter de búsqueda que aparece antes en el haystack:

<?php

// 'o' and 'q' are both in the list; 'q' appears first in the haystack.
echo strpbrk("The quick brown fox", "oq"); // quick brown fox

Salida:

quick brown fox

Uso práctico: dividir en un delimitador

Como strpbrk() devuelve "todo a partir del delimitador en adelante", se puede combinar con substr() para obtener el valor después de un separador:

<?php

$pair = "name=John";

$fromEquals = strpbrk($pair, "=");   // "=John"
$value      = substr($fromEquals, 1); // drop the leading "=" -> "John"

echo $value;

Salida:

John

También funciona bien cuando se aceptan varios delimitadores posibles a la vez:

<?php

$line = "[email protected]";

echo strpbrk($line, "@?#"); // @example.com

Salida:

@example.com

Manejo del caso "no encontrado"

Cuando ningún carácter de la lista existe en el haystack, strpbrk() devuelve false. Siempre compara con el operador estricto !== para que un resultado vacío pero válido no se confunda con un fallo:

<?php

$result = strpbrk("PHP 8.4", "AEIOU"); // uppercase vowels — none present (case-sensitive)

if ($result === false) {
  echo "No matching character found.";
} else {
  echo $result;
}

Salida:

No matching character found.

strpbrk() vs. funciones relacionadas

FunciónBuscaDevuelve
strpbrk()cualquiera de varios caracteresel resto de la cadena desde la primera coincidencia, o false
strpos()una subcadena únicala posición numérica de la coincidencia, o false
strstr()una subcadena únicael resto de la cadena desde esa subcadena, o false
strrchr()la última aparición de un carácterel resto de la cadena desde ese punto, o false

Usa strpbrk() cuando tengas un pequeño conjunto de caracteres a los que reaccionar y quieras el resto de la cadena. Si solo buscas una subcadena fija, strstr() o strpos() es más claro. Para coincidencias basadas en patrones, usa preg_match().

Conclusión

strpbrk() devuelve el resto de una cadena a partir del primer carácter que coincide con cualquier carácter de tu conjunto de búsqueda, o false si no hay coincidencia. Recuerda que la coincidencia se elige por posición en el haystack, no por el orden de tu lista de búsqueda, y que es sensible a mayúsculas y minúsculas. Es una alternativa concisa a una expresión regular cuando necesitas "todo a partir del primer delimitador en adelante".

Práctica

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