W3docs

strpbrk()

A função strpbrk() no PHP pesquisa em uma string qualquer caractere de um conjunto e retorna o trecho da string a partir da primeira correspondência.

Introdução

A função strpbrk() no PHP pesquisa em uma string qualquer um de um conjunto de caracteres e retorna o restante da string a partir da primeira correspondência. O nome significa "string pointer break" — ela percorre o haystack da esquerda para a direita e para (quebra) assim que encontra um caractere que esteja no conjunto de busca.

Isso a torna útil para tarefas como "me dê tudo a partir do primeiro @, = ou ? em diante" sem precisar escrever uma expressão regular. Este artigo aborda a sintaxe, os valores de retorno, um erro comum sobre como a correspondência é escolhida e casos de uso práticos.

Sintaxe

strpbrk(string $haystack, string $char_list): string|false
ParâmetroDescrição
$haystackA string onde a busca será realizada.
$char_listUma string listando os caracteres a procurar. Cada caractere é tratado individualmente"abc" significa "qualquer um entre a, b ou c", não a substring "abc".

Valor de retorno: a parte de $haystack desde o primeiro caractere correspondente até o fim da string. Se nenhum dos caracteres em $char_list estiver presente, retorna false.

strpbrk() é sensível a maiúsculas e minúsculas: pesquisar por "A" não corresponderá a um a minúsculo.

Exemplo básico

php— editable, runs on the server

Saída:

Found 'llo World' in 'Hello World'

Uma surpresa comum aqui: o resultado é llo World, não World. A função retorna a partir do primeiro caractere correspondente encontrado ao percorrer da esquerda para a direita. Embora W esteja na lista de busca, o l minúsculo em "Hello" aparece antes na string, portanto o trecho começa ali. A ordem em $char_list não importa — apenas a posição no haystack é relevante.

A correspondência é posicional, não segue a ordem da lista

É fácil supor que strpbrk() respeita a ordem dos caracteres passados. Não respeita — ela retorna a partir do caractere de busca que aparecer mais cedo no 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

Saída:

quick brown fox

Uso prático: dividir em um delimitador

Como strpbrk() retorna "tudo a partir do delimitador em diante", você pode combiná-la com substr() para obter o valor após um separador:

<?php

$pair = "name=John";

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

echo $value;

Saída:

John

Também funciona bem quando você aceita vários delimitadores possíveis ao mesmo tempo:

<?php

$line = "[email protected]";

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

Saída:

@example.com

Tratando "não encontrado"

Quando nenhum dos caracteres listados existe no haystack, strpbrk() retorna false. Sempre compare com o operador estrito !== para que um resultado vazio mas válido não seja confundido com falha:

<?php

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

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

Saída:

No matching character found.

strpbrk() vs. funções relacionadas

FunçãoPesquisa porRetorna
strpbrk()qualquer um de vários caractereso restante da string a partir da primeira correspondência, ou false
strpos()uma única substringa posição numérica da correspondência, ou false
strstr()uma única substringo restante da string a partir dessa substring, ou false
strrchr()a última ocorrência de um caractereo restante da string a partir desse ponto, ou false

Use strpbrk() quando você tem um pequeno conjunto de caracteres para reagir e deseja o restante da string. Se você sempre pesquisa apenas uma substring fixa, strstr() ou strpos() é mais claro. Para correspondência baseada em padrões, use preg_match().

Conclusão

strpbrk() retorna o restante de uma string a partir do primeiro caractere que corresponde a qualquer caractere no conjunto de busca, ou false se não houver correspondência. Lembre-se de que a correspondência é escolhida pela posição no haystack, não pela ordem da lista de busca, e que ela é sensível a maiúsculas e minúsculas. É uma alternativa concisa a uma expressão regular sempre que você precisar de "tudo a partir do primeiro delimitador em diante".

Prática

Prática
O que a função strpbrk() no PHP faz?
O que a função strpbrk() no PHP faz?
Was this page helpful?