Como verificar se uma string contém outra no PHP?
Frequentemente precisamos verificar se um determinado trecho de texto está presente dentro de uma string. O PHP oferece diversas formas de fazer essa verificação, como str_contains()
, strpos()
e preg_match()
.
Verificando a existência de uma string com str_contains() (PHP 8+)
A função str_contains()
foi introduzida no PHP 8 e retorna true
ou false
se a string contiver um determinado valor:
<?php
$frase = "Aprender PHP é muito útil";
if (str_contains($frase, "PHP")) {
echo "A string contém 'PHP'.";
} else {
echo "A string não contém 'PHP'.";
}
?>
Aqui, a função retorna true
, pois a palavra "PHP" está presente na string.
Usando strpos() para encontrar uma string (Compatível com versões anteriores)
Para versões anteriores ao PHP 8, podemos usar strpos()
, que retorna a posição da string dentro do texto ou false
caso não encontre:
<?php
$frase = "O desenvolvimento web depende de PHP";
if (strpos($frase, "PHP") !== false) {
echo "A string contém 'PHP'.";
}
?>
Se a função retornar um valor diferente de false
, significa que a string foi encontrada.
Verificando com expressões regulares usando preg_match()
Se precisar de uma verificação mais avançada, podemos usar preg_match()
:
<?php
$frase = "Curso de programação em PHP";
if (preg_match("/PHP/i", $frase)) {
echo "A string contém 'PHP'.";
}
?>
Aqui, preg_match()
verifica se "PHP" está presente, ignorando diferenças de maiúsculas e minúsculas.
Quando usar str_contains(), strpos() ou preg_match() no PHP?
A verificação da presença de substrings em PHP é útil para buscas em textos, validação de entrada e filtragem de dados. Com a introdução de str_contains()
no PHP 8, ficou mais fácil e intuitivo realizar essa tarefa. No entanto, strpos()
continua sendo uma alternativa confiável para versões anteriores. Para buscas mais avançadas, preg_match()
permite o uso de padrões complexos.
Algumas aplicações:
- Filtragem de palavras-chave em textos dinâmicos
- Verificação de domínios ou palavras proibidas em formulários
- Identificação de URLs ou códigos dentro de textos
- Validação de entradas para evitar SQL Injection ou XSS
Dicas para quem está começando
- Se estiver usando PHP 8+, prefira
str_contains()
pela simplicidade. - Para compatibilidade com versões mais antigas,
strpos()
é a melhor alternativa. - Se precisar de buscas complexas,
preg_match()
permite expressões regulares poderosas. - Lembre-se de verificar se
strpos()
retornafalse
, pois pode retornar0
se a string for encontrada no início. - Evite buscas desnecessárias em grandes strings para otimizar o desempenho.
Contribuições de Rafael Nogueira