PHP 8: str_starts_with e str_ends_with — como verificar o início e o fim de uma string

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Chega de gambiarras: conhecendo str_starts_with e str_ends_with no PHP 8

\n\n

Você já escreveu um código como if (strpos($str, 'prefix') === 0) e sentiu que parecia meio estranho? Ou talvez tenha perdido tempo decifrando substr($str, -3) === 'end' para verificar o final de uma string? Se sim — tenho uma ótima notícia para você. A partir do PHP 8.0, a linguagem ganhou duas funções elegantes e intuitivas: str_starts_with() e str_ends_with().

\n\n

Neste artigo, vamos analisá-las de ponta a ponta. Você aprenderá como elas funcionam, como se diferenciam das abordagens antigas e por que vale a pena usá-las em todo projeto PHP moderno. Também veremos exemplos reais do dia a dia do desenvolvedor — desde verificação de URL até validação de email e trabalho com caminhos de arquivos.

\n\n

O que são str_starts_with() e str_ends_with()?

\n\n

São funções nativas do PHP 8 que permitem verificar se uma string começa com uma determinada substring ou termina com ela. Elas retornam um valor booleano (true ou false), o que as torna ideais para uso em condições.

\n\n

Veja a sintaxe básica:

\n\n
str_starts_with(string $haystack, string $needle): bool\nstr_ends_with(string $haystack, string $needle): bool
\n\n

Onde $haystack é a string que você está verificando, e $needle é a substring que você procura no início ou no final.

\n\n

Exemplo simples

\n\n
<?php\n$string = "Olá, mundo!";\n\n// Verifica se a string começa com "Olá"\nif (str_starts_with($string, "Olá")) {\n    echo "A string começa com 'Olá'"; // Este código será executado\n}\n\n// Verifica se a string termina com "mundo!"\nif (str_ends_with($string, "mundo!")) {\n    echo "A string termina com 'mundo!'"; // E este também\n}\n?>
\n\n

Simples, não é? Sem cálculos adicionais, sem === 0 ou strlen(). Apenas a verificação e o resultado.

\n\n

Por que isso é importante? Problemas das abordagens antigas

\n\n

Antes do PHP 8, os desenvolvedores precisavam se virar. A forma mais popular de verificar o início de uma string era assim:

\n\n
if (strpos($string, 'prefix') === 0) { ... }
\n\n

Qual é o problema? strpos() procura a substring em qualquer lugar da string, não apenas no início. Sim, a verificação === 0 elimina resultados incorretos, mas o código em si não expressa a intenção do desenvolvedor. Você olha para ele e pensa: "Hmm, ele está verificando se começa... ou apenas procurando?" — isso reduz a legibilidade.

\n\n

E a verificação do final da string era ainda menos intuitiva:

\n\n
if (substr($string, -3) === 'end') { ... }
\n\n

Aqui, você precisa saber exatamente o comprimento da substring (-3), o que leva a erros se você informar o número errado. Além disso, se a substring for maior que a própria string — substr() simplesmente retornará uma string vazia, e a condição nunca será atendida.

\n\n

As novas funções str_starts_with() e str_ends_with() resolvem todos esses problemas:

\n
    \n
  • Legibilidade: O código fala por si só.
  • \n
  • Confiabilidade: Não é preciso pensar no comprimento da substring ou em strings vazias.
  • \n
  • Desempenho: As funções são otimizadas no núcleo do PHP.
  • \n
\n\n

Exemplos reais de uso no desenvolvimento web

\n\n

Vamos ver onde essas funções podem ser úteis na prática. Selecionei alguns cenários que você certamente já encontrou no seu trabalho.

\n\n

1. Verificação de prefixos de URL (roteamento, redirecionamentos)

\n\n

Suponha que você esteja escrevendo um roteador simples e queira processar URLs que começam com /admin:

\n\n
<?php\n$uri = $_SERVER['REQUEST_URI'];\n\nif (str_starts_with($uri, '/admin')) {\n    echo "Você está no painel de administração";\n    // Carrega o                

Blogs

Book Recommendations