Expressões Regulares em PHP com Exemplos: na Prática

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

Expressões Regulares em PHP: da Teoria à Prática

\n\n

Expressões regulares (regex ou regexp) são uma ferramenta poderosa para buscar, substituir e validar strings de acordo com um padrão definido. Em PHP, elas são implementadas através de um conjunto de funções PCRE (Perl Compatible Regular Expressions) e permitem resolver tarefas de qualquer complexidade: desde validação de email até parsing de código HTML. Neste artigo, vamos analisar a sintaxe, as principais funções e ver exemplos práticos que serão úteis para todo desenvolvedor PHP.

\n\n

1. Fundamentos da Sintaxe de Expressões Regulares em PHP

\n\n

Qualquer expressão regular em PHP é delimitada por separadores (geralmente barras /). Após o separador de fechamento, podem ser especificados modificadores — flags que alteram o comportamento da busca.

\n\n
$pattern = '/padrão/modificadores';
\n\n

Metacaracteres principais:

\n
    \n
  • . — qualquer caractere único (exceto quebra de linha)
  • \n
  • * — zero ou mais repetições do caractere anterior
  • \n
  • + — uma ou mais repetições
  • \n
  • ? — zero ou uma repetição (torna o quantificador preguiçoso)
  • \n
  • ^ — início da string
  • \n
  • $ — final da string
  • \n
  • \\d — dígito (0-9)
  • \n
  • \\w — letra, dígito ou sublinhado
  • \n
  • \\s — caractere de espaço em branco
  • \n
  • [] — classe de caracteres (exemplo: [a-z])
  • \n
  • () — grupo de captura
  • \n
\n\n

Modificadores populares:

\n
    \n
  • i — busca sem distinção entre maiúsculas e minúsculas
  • \n
  • m — modo multilinha (^ e $ funcionam para cada linha)
  • \n
  • u — suporte a UTF-8 (obrigatório para caracteres cirílicos)
  • \n
  • s — o ponto também captura quebras de linha
  • \n
\n\n

2. Função preg_match(): Busca de Correspondências

\n\n

preg_match() é a função mais popular. Ela verifica se a string corresponde ao padrão e retorna 1 (se houver correspondência) ou 0 (se não houver). O terceiro parâmetro é um array onde as correspondências encontradas são armazenadas.

\n\n

Exemplo 1. Validação de endereço de email

\n
<?php\n$email = "user@example.com";\n$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/';\n\nif (preg_match($pattern, $email)) {\n    echo "Email válido";\n} else {\n    echo "Email inválido";\n}\n// Saída: Email válido\n?>
\n\n

Exemplo 2. Extração de dados de uma string

\n
<?php\n$text = "Meu número: +7 (999) 123-45-67";\n$pattern = '/\\+7\\s*\\(\\d{3}\\)\\s*\\d{3}-\\d{2}-\\d{2}/u';\n\nif (preg_match($pattern, $text, $matches)) {\n    echo "Número encontrado: " . $matches[0];\n}\n// Saída: Número encontrado: +7 (999) 123-45-67\n?>
\n\n

Observe: o modificador u é obrigatório se a string contiver caracteres cirílicos ou caracteres especiais Unicode.

\n\n

3. Função preg_replace(): Substituição por Padrão

\n\n

preg_replace() busca na string todas as correspondências com o padrão e as substitui pelo texto especificado. É possível usar grupos de captura $1, $2, etc., para inserir partes do texto original.

\n\n

Exemplo 3. Formatação de número de telefone

\n
<?php\n$phone = "89991234567";\n$pattern = '/(\\d{1})(\\d{3})(\\d{3})(\\d{2})(\\d{2})/';\n$replacement = '+7 ($2) $3-$4-$5';\n\n$formatted = preg_replace($pattern, $replacement, $phone);\necho $formatted; // +7 (999) 123-45-67\n?>
\n\n

Exemplo 4. Limpeza de HTML removendo tags (exceto as permitidas)

\n
<?php\n$html = "<b>Negrito</b> <script>alert('xss')</script> texto";\n$pattern = '/<\\s*\\/?\\s*(?!b|i|u|a\\b)[^>]*>/ui';\n\n$clean = preg_replace($pattern, '', $html);\necho $clean; // <b>Negrito</b>  texto\n?><                

Blogs

Book Recommendations