programação

Expressões Regulares em PHP: Guia Completo

As expressões regulares, também conhecidas como regex ou padrões de expressão regular (PCRE) em PHP, são uma ferramenta poderosa para trabalhar com texto. Elas permitem que você busque padrões específicos dentro de strings, substitua partes do texto, valide entradas e muito mais. No PHP, as expressões regulares são suportadas através de funções como preg_match(), preg_replace(), preg_split() e outras que trabalham com o Perl Compatible Regular Expressions (PCRE).

As expressões regulares em PHP são delimitadas por barras (/) e podem conter caracteres especiais que representam padrões a serem encontrados na string de entrada. Alguns dos caracteres especiais mais comuns incluem:

  1. ^ (Âncora de Início): Indica que o padrão deve ocorrer no início da string.
  2. $ (Âncora de Fim): Indica que o padrão deve ocorrer no final da string.
  3. . (Ponto): Representa qualquer caractere, exceto uma nova linha.
  4. * (Asterisco): Indica zero ou mais ocorrências do padrão anterior.
  5. + (Sinal de Adição): Indica uma ou mais ocorrências do padrão anterior.
  6. ? (Ponto de Interrogação): Indica zero ou uma ocorrência do padrão anterior.
  7. [] (Classe de Caracteres): Especifica um conjunto de caracteres permitidos.
  8. | (Barra Vertical): Indica uma alternância entre padrões.
  9. \ (Barra Invertida): Escapa o próximo caractere, permitindo que caracteres especiais sejam tratados literalmente.
  10. () (Parênteses): Agrupa padrões para aplicar operadores a eles.

Vamos ver alguns exemplos de como esses caracteres especiais podem ser usados em expressões regulares em PHP:

  • /^hello/: Encontra a palavra “hello” no início da string.
  • /world$/: Encontra a palavra “world” no final da string.
  • /gr.y/: Encontra palavras como “gray”, “grey” ou “grxy”, onde o “.” representa qualquer caractere.
  • /apple*/: Encontra “appl”, “apple”, “applee”, etc., onde o “*” indica zero ou mais ocorrências do “e” anterior.
  • /banana+/: Encontra “banana”, “bananaa”, “bananaaa”, etc., onde o “+” indica uma ou mais ocorrências do “a” anterior.
  • /colo?r/: Encontra “color” ou “colour”, onde o “?” indica zero ou uma ocorrência do “u” anterior.
  • /[aeiou]/: Encontra qualquer vogal na string.
  • /(red|blue) car/: Encontra “red car” ou “blue car”, onde “|” representa uma alternância entre padrões.
  • /\d{3}-\d{3}-\d{4}/: Encontra padrões de números de telefone no formato XXX-XXX-XXXX, onde “\d” representa dígitos e “{n}” indica o número exato de ocorrências.

Além desses caracteres especiais, as expressões regulares em PHP suportam modificadores, que podem alterar o comportamento padrão da expressão regular. Alguns modificadores comuns incluem:

  • i (Insensitive): Faz a busca ser case-insensitive.
  • m (Multiline): Permite que o caractere “^” e “$” correspondam ao início e fim de cada linha, não apenas da string.
  • s (Singleline): Faz o ponto “.” corresponder a qualquer caractere, incluindo novas linhas.
  • u (Unicode): Trata a string como UTF-8, permitindo que caracteres Unicode sejam manipulados corretamente.

Por exemplo, /hello/i encontraria “hello”, “Hello”, “HELLO”, etc., devido ao modificador “i” tornar a busca insensível a maiúsculas e minúsculas.

No entanto, é importante ter cuidado ao usar expressões regulares, pois elas podem ser complexas e difíceis de entender. Além disso, expressões regulares podem ser menos eficientes em comparação com métodos de manipulação de string mais simples para algumas tarefas.

Em resumo, as expressões regulares em PHP oferecem uma maneira poderosa e flexível de trabalhar com texto, permitindo buscar padrões específicos, validar entradas e realizar substituições complexas em strings. Compreender os fundamentos das expressões regulares e praticar seu uso é essencial para aproveitar ao máximo essa ferramenta versátil.

“Mais Informações”

Claro, vamos explorar mais profundamente o mundo das expressões regulares em PHP.

Métodos de Expressões Regulares em PHP:

  1. preg_match(pattern, subject, matches): Este método verifica se um padrão corresponde a uma string. Retorna 1 se o padrão for encontrado, 0 se não for encontrado ou FALSE se ocorrer um erro.
php
$pattern = '/hello/'; $string = 'Hello, world!'; if (preg_match($pattern, $string)) { echo 'Padrão encontrado.'; } else { echo 'Padrão não encontrado.'; }
  1. preg_match_all(pattern, subject, matches): Este método encontra todas as correspondências de um padrão em uma string. Ele retorna o número de correspondências encontradas.
php
$pattern = '/a/'; $string = 'banana'; if (preg_match_all($pattern, $string, $matches)) { echo 'Número de correspondências: ' . count($matches[0]); }
  1. preg_replace(pattern, replacement, subject): Este método substitui todas as ocorrências de um padrão em uma string por outra string.
php
$pattern = '/\s+/'; $replacement = '-'; $string = 'Esta é uma frase com espaços.'; echo preg_replace($pattern, $replacement, $string);
  1. preg_split(pattern, subject): Este método divide uma string em um array usando um padrão como delimitador.
php
$pattern = '/[\s,]+/'; $string = 'maçã, banana, laranja'; $array = preg_split($pattern, $string); print_r($array);

Classes de Caracteres e Quantificadores:

  • [abc]: Corresponde a qualquer caractere dentro dos colchetes (neste caso, ‘a’, ‘b’ ou ‘c’).
  • [^abc]: Corresponde a qualquer caractere que não esteja dentro dos colchetes.
  • \d: Corresponde a qualquer dígito decimal.
  • \w: Corresponde a qualquer caractere alfanumérico ou sublinhado.
  • \s: Corresponde a qualquer espaço em branco.
  • \b: Corresponde a uma fronteira de palavra.

Quantificadores:

  • *: Zero ou mais ocorrências.
  • +: Uma ou mais ocorrências.
  • ?: Zero ou uma ocorrência.
  • {n}: Exatamente n ocorrências.
  • {n,}: Pelo menos n ocorrências.
  • {n,m}: Entre n e m ocorrências.

Modificadores e Anchors:

  • i: Insensitive, torna a expressão regular insensível a maiúsculas e minúsculas.
  • m: Multiline, faz com que ^ e $ correspondam ao início e ao fim de cada linha.
  • s: Singleline, faz com que o ponto corresponda a qualquer caractere, incluindo novas linhas.
  • ^: Corresponde ao início da string.
  • $: Corresponde ao fim da string.

Exemplos Avançados:

  • Email Validation:
php
$email = '[email protected]'; if (preg_match('/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/', $email)) { echo 'Email válido.'; }
  • Validação de Números de Telefone:
php
$phone_number = '123-456-7890'; if (preg_match('/^\d{3}-\d{3}-\d{4}$/', $phone_number)) { echo 'Número de telefone válido.'; }

Considerações Finais:

As expressões regulares são uma ferramenta poderosa para manipular texto em PHP, mas podem ser complexas. É importante entender os padrões que você está procurando e testar suas expressões regularmente para garantir que elas estejam funcionando conforme o esperado. Além disso, sempre documente suas expressões regulares para facilitar a manutenção e compreensão do código por outros desenvolvedores.

Botão Voltar ao Topo