PHP strpos: descobrindo a posição de uma string na variável!

Entender sobre a importância das strings e suas possibilidades de manipulação faz parte da vida de qualquer pessoa que esteja iniciando na programação. Cada linguagem tem seus parâmetros e funções para trabalhar esse tipo de dado — inclusive, existem aquelas utilizadas para realizar buscas em grandes conjuntos de strings, como é o caso da função strpos() na linguagem PHP.

Pode parecer um pouco complicado à primeira vista, ainda mais para as pessoas que nunca tiveram necessidade de trabalhar com o tipo de dado string durante o desenvolvimento de aplicações Web. Se você está nesse grupo, saiba que essa necessidade é bastante comum.

Por esse motivo, escolhemos trabalhar essa função e suas peculiaridades. Além, é claro, de algumas outras funções intimamente relacionadas a ela. Ao final de nosso conteúdo, você perceberá que encontrar a posição de determinada string em um conjunto é uma tarefa bem simples, ainda mais utilizando a função PHP strpos().

Para isso, percorreremos os seguintes temas:

Com certeza, os tópicos ajudarão muito na compreensão e na aplicação desse tipo de função — e conforme as melhores práticas em PHP. Então, prepare sua IDE e vamos lá!

O que é o PHP strpos()?

O PHP strpos() é uma função utilizada para encontrar a primeira posição de um caractere específico em uma string. É possível usar, nessa função, toda uma string como parâmetro, e não apenas uma única posição. A função strpos() é sensível às diferenças entre maiúsculas e minúsculas.

Qual a sintaxe e os parâmetros do PHP strpos()?

A sintaxe da função strpos() utiliza os seguintes parâmetros para sua execução:

strpos( string, search, start ); 

Na sintaxe demonstrada acima, temos “string” como a string que será pesquisada. O “search” é o termo que será procurado na string que determinamos previamente.

Por último, temos o “start”, o qual é um parâmetro opcional e especifica em que posição do array de caracteres da string a busca deve iniciar — esse parâmetro será um valor de tipo int, sempre. De acordo com a documentação oficial do PHP, é possível, também, demonstrar a sintaxe dessa função dessa maneira:

strpos ( string $haystack, string $needle, int $offset = 0 ) : int | false

Funciona da mesma forma do exemplo anterior, sendo que:

  • $haystack é a string que buscamos;
  • $needle é o valor o qual faremos a busca na string ($haystack);
  • $offset é um valor do tipo int, responsável pela representação do índice — o mesmo valor em que a função iniciará a busca. O valor é 0 (zero) por padrão;
  • Em caso em que o parâmetro $needle não for encontrado em $haystack, será retornado o booleano “false” durante a execução dessa função.

Importante notar que o parâmetro $offset da função strpos() poderá ser tanto positivo quanto negativo. No primeiro caso, a função inicia a busca pelo número determinado no parâmetro, do início para o final da string, ocorrendo o inverso em caso de o valor ser negativo.

Outra informação relevante para a compreensão da função é que o parâmetro $needle pode ser um texto ou um número. Isso porque, na função, os tipos numéricos só serão pesquisados como se fossem strings contínuas. Além disso, esse parâmetro pode ser qualquer tipo de valor, além de strings — desde que possam se comportar como strings em contextos lexicais em que a aplicação é desenvolvida.

Isso acontecerá muito quando manipulamos objetos como JSONs e outros formatos de armazenamento e organização de dados.

Conheça as funções relacionadas: o que são as funções PHP strrpos(), stripos() e strripos()?

Existem outras funções que se diferem um pouco da função strpos(), embora tenham seu uso bastante relacionado. A seguir, você acompanha alguns detalhes, como as diferenças entre cada uma dessas funções. Confira!

PHP strrpos()

A função strrpos() é utilizada para encontrar a última ocorrência de determinada string em um texto. Sua sintaxe é bem parecida com a da função strpos(), sendo que ela também recebe dois parâmetros: a diferença é que no primeiro indica o texto, e o segundo será a substring que será buscada. A função strrpos() também é sensível à diferenciação entre maiúsculas e minúsculas.

A diferença entre essas duas funções está no resultado apresentado pelos dois métodos: a função strpos() retornará somente um valor numérico representando a posição inicial da substring no texto, ou retornará “false”, caso nenhuma coincidência seja encontrada.

Já a função strrpos() poderá retornar toda essa mesma informação, adicionando mais alguns detalhes, com os caracteres restantes que formam aquela substring dentro do texto (string) original. Esse recurso pode ser utilizado em inúmeras possibilidades de aplicações em PHP, principalmente, no que tange a questões de segurança interna.

Mais adiante, no conteúdo, você poderá conferir um exemplo para compreender melhor esse componente.

PHP stripos()

A função stripos() é uma variação da função strpos(), sendo que ela também tem a finalidade de encontrar a posição inicial de uma substring em um texto. A diferença entre ambas está no fato de que, enquanto a primeira considera as letras como sendo maiúsculas ou minúsculas (o chamado sensitive case, em inglês), a segunda não faz essa distinção, isto é, todas as letras são consideradas como sendo minúsculas.

PHP strripos()

Por último, temos a função strripos(), que pode ser vista como uma mistura das duas anteriores: assim como na stripos(), ela não fará a distinção entre maiúsculas e minúsculas nas strings que foram buscadas — seus resultados serão similares às apresentadas pela função strrpos().

Afinal, como usar o PHP strpos() e as funções relacionadas? Confira 4 exemplos de uso prático!

Durante a próxima parte do nosso guia, você poderá conferir vários exemplos de aplicação das funções que abordamos até o momento. É importante notar que os exemplos estão prontos para serem explorados por você.

Seja em sua própria IDE, seja em algum ambiente de execução online, é muito importante aplicá-los, modificando seus parâmetros para ajudar na fixação do conteúdo e na compreensão do funcionamento dessas funções. Então, prepare-se e vamos nessa!

1. PHP strpos() na prática

Trouxemos um exemplo bem simples para ajudar a entender a aplicação dessa função. Para isso, usamos uma página HTML com a string a ser pesquisada com a função strpos():

<!DOCTYPE html>
<html>
<body>

<?php
echo strpos("Amamos PHP, estude agora mesmo com a Trybe","PHP");
?>

</body>
</html>

O código acima deverá retornar como resposta da função o número 7, pois o “PHP” é encontrado na posição 7 da nossa string. Lembrando que os índices começam em 0 (zero) e há diferenciação entre maiúsculas e minúsculas pela própria função.

Se buscarmos por “php”, será retornado “false”, pois a função não encontrará a string em minúscula em nosso texto!

2. Uso da função strrpos()

Confira, a seguir, uma aplicação bem simples da função strrpos(), sendo demonstrada da mesma forma que a anterior para facilitar a diferenciação de ambas funções por você:

<!DOCTYPE html>
<html>
<body>

<?php
echo strrpos("Amamos PHP, estude agora mesmo PHP com a Trybe","PHP");
?>

</body>
</html>

Como já vimos no primeiro exemplo com a função strpos(), a função strrpos() encontra a última ocorrência da busca pela string solicitada. Nesse caso, deverá retornar o número inteiro (int) 31 — a mesma posição ocupada por nosso último “PHP” na string que usamos.

3. Utilização da função stripos()

Confira, agora, quase o mesmo código dos anteriores. A diferença está na função que aplicamos, nesse caso, a stripos():

<!DOCTYPE html>
<html>
<body>

<?php
echo stripos("Amamos PHP, estude agora mesmo com a Trybe","php");
?>

</body>
</html>

Você poderá perceber, aqui, que o funcionamento é semelhante ao das funções anteriores. O que difere, nesse caso, é que o stripos() não fará diferença durante a busca por caracteres maiúsculos ou minúsculos.

No exemplo, buscamos por “php” em minúscula. Mesmo assim, o código deverá apresentar como resposta o inteiro (int) 7 — a primeira ocorrência de “php” em nossa string, mesmo estando em maiúscula.

4. Uso da função strripos()

A seguir, você poderá conferir a aplicação da função strripos() de uma maneira bem simples:

<!DOCTYPE html>
<html>
<body>

<?php
echo strripos("Amamos PHP! Estude PHP agora mesmo com a Trybe","PHP");
?>

</body>
</html>

Como mencionado, a função strripos() é uma combinação das últimas duas que abordamos. Ela faz a busca na string, apresentando a posição da última ocorrência, e diferencia maiúsculas de minúsculas.

Vimos, no decorrer do nosso guia, os aspectos principais que precisamos dar atenção ao usar a função PHP strpos(). Entendemos para que e como utilizá-la, aplicando as funções em exemplos práticos para auxiliar em seu entendimento. Além disso, exploramos outras funções relacionadas à função strpos(), a strrpos(), a stripos() e a strripos(), também abordadas em exemplos didáticos, de simples leitura e aplicação.

Gostou do conteúdo e quer saber mais sobre PHP? Acesse nosso guia completo sobre essa linguagem e se prepare para o mercado de desenvolvimento Web com a Trybe!