Expressões Regulares em PHP: do básico às técnicas avançadas
Expressões regulares (regex) são uma ferramenta poderosa para buscar, substituir e analisar dados textuais. Em PHP, elas são implementadas através do conjunto de funções PCRE (Perl Compatible Regular Expressions). Neste artigo, vamos abordar os fundamentos do trabalho com expressões regulares, explorar as principais funções e fornecer exemplos práticos que ajudarão você a automatizar o processamento de strings.
1. Funções principais para trabalhar com expressões regulares em PHP
O PHP oferece várias funções embutidas para trabalhar com expressões regulares. Vamos ver as mais populares.
preg_match() — busca por correspondência
A função preg_match() verifica se uma string corresponde a um determinado padrão. Ela retorna 1 se uma correspondência for encontrada e 0 caso contrário.
<?php$text = "Olá, mundo! PHP é legal.";$pattern = "/PHP/";
if (preg_match($pattern, $text)) { echo "Palavra 'PHP' encontrada!";} else { echo "Nenhuma correspondência.";}?>Se você precisar obter a própria correspondência, passe um terceiro argumento — um array para os resultados:
<?php$text = "Meu email: user@example.com";$pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
if (preg_match($pattern, $text, $matches)) { echo "Email encontrado: " . $matches[0];}?>preg_replace() — substituição por padrão
A função preg_replace() substitui todas as correspondências de um padrão por uma string especificada. É análoga ao str_replace(), mas com suporte a expressões regulares.
<?php$text = "Hoje é 15.03.2024, e amanhã será 16.03.2024";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1"; // Reorganiza as partes da data
echo preg_replace($pattern, $replacement, $text);// Exibirá: Hoje é 2024-03-15, e amanhã será 2024-03-16?>preg_split() — divisão de string
A função preg_split() divide uma string usando uma expressão regular. É mais conveniente que explode() quando os delimitadores podem ser variados.
<?php$text = "maçã, pera; banana: laranja";$pattern = "/[,;:]/"; // Delimitadores: vírgula, ponto e vírgula, dois pontos$fruits = preg_split($pattern, $text);
print_r($fruits);// Array ( [0] => maçã [1] => pera [2] => banana [3] => laranja )?>2. Metacaracteres e sintaxe das expressões regulares
Para usar expressões regulares de forma eficaz, é necessário entender sua sintaxe. Aqui estão os principais metacaracteres:
.— qualquer caractere (exceto nova linha)^— início da string$— fim da string*— 0 ou mais repetições+— 1 ou mais repetições?— 0 ou 1 repetição\\d— dígito (0-9)\\w— letra, dígito ou sublinhado\\s— caractere de espaço em branco[abc]— qualquer caractere do conjunto(...)— grupo de captura
Exemplo: validação de número de telefone
<?php$phone = "+7 (123) 456-78-90";$pattern = "/^\\+7\\s\\(\\d{3}\\)\\s\\d{3}-\\d{2}-\\d{2}$/";
if (preg_match($pattern, $phone)) { echo "Número de telefone válido!";} else { echo "Formato de número inválido.";}?>3. Técnicas avançadas e modificadores
Modificadores alteram o comportamento da expressão regular. Eles são especificados após a barra de fechamento. Vamos ver os mais úteis:
i— busca case-insensitive (ignora maiúsculas/minúsculas)m— modo multilinha (^ e $ funcionam para cada linha)s— ponto inclui caractere de nova linhau— suporte a UTF-8