Expressões Regulares em PHP: uma ferramenta poderosa para trabalhar com texto
Expressões regulares (regex) são sequências de caracteres que definem um padrão para busca e manipulação de strings. Em PHP, elas são implementadas através da biblioteca PCRE (Perl Compatible Regular Expressions) e fornecem aos desenvolvedores recursos flexíveis para validação de dados, análise de texto e substituição de substrings. Neste artigo, vamos abordar as principais funções, sintaxe e exemplos práticos de uso de expressões regulares em PHP.
Principais funções do PHP para trabalhar com expressões regulares
Em PHP, existem várias funções-chave que permitem trabalhar com expressões regulares. Vamos analisar as mais importantes.
preg_match() — busca da primeira correspondência
A função preg_match() busca a primeira correspondência com o padrão em uma string. Ela retorna 1 se uma correspondência for encontrada, 0 se não, e FALSE em caso de erro.
<?php$text = "Meu email: example@mail.com e test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
if (preg_match($pattern, $text, $matches)) { echo "Email encontrado: " . $matches[0]; // Exibirá: Email encontrado: example@mail.com}?>preg_match_all() — busca de todas as correspondências
Ao contrário de preg_match(), esta função encontra todas as correspondências em uma string e as coloca em um array multidimensional.
<?php$text = "Meu email: example@mail.com e test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
preg_match_all($pattern, $text, $matches);print_r($matches[0]);// Exibirá: Array ( [0] => example@mail.com [1] => test@domain.org )?>preg_replace() — substituição por padrão
A função preg_replace() substitui todas as correspondências com o padrão pela string especificada. Ela suporta referências anteriores e modificadores.
<?php$text = "Hoje é 15.03.2024, e amanhã será 16.03.2024";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1";
echo preg_replace($pattern, $replacement, $text);// Exibirá: Hoje é 2024-03-15, e amanhã será 2024-03-16?>preg_split() — divisão de string por padrão
A função preg_split() divide uma string em um array de acordo com o padrão especificado. É análoga ao explode(), mas com suporte a expressões regulares.
<?php$text = "maçã, pera; banana: laranja";$pattern = "/[,;: ]+/";
$fruits = preg_split($pattern, $text);print_r($fruits);// Exibirá: Array ( [0] => maçã [1] => pera [2] => banana [3] => laranja )?>Sintaxe das expressões regulares
As expressões regulares em PHP são delimitadas por separadores (geralmente barras /) e podem conter modificadores após o delimitador de fechamento. Vamos analisar os principais elementos da sintaxe.
Metacaracteres e quantificadores
- Classes de caracteres:
.(qualquer caractere),\\d(dígito),\\w(letra, dígito, sublinhado),\\s(espaço em branco) - Quantificadores:
*(0 ou mais),+(1 ou mais),?(0 ou 1),{n,m}(de n a m) - Âncoras:
^(início da string),$(fim da string),\\b(limite de palavra) - Agrupamento:
()(captura de grupo),(?:)(grupo não capturante) - Alternativa:
|(OU lógico)
Modificadores de padrão
i— busca sem distinção entre maiúsculas e minúsculasm— modo multilinha (^ e $ funcionam para cada linha)s— o metacaractere . inclui quebra de linhau— suporte a Unicode (obrigatório para trabalhar com