PHP preg_match(): Expressões Regulares (Regex)

⚡ Resumo Inteligente

Expressões regulares em PHP são ferramentas de correspondência de padrões que validam, dividem e substituem texto em uma única expressão. Este guia aborda as funções principais `preg_match`, `preg_split` e `preg_replace`, explica os metacaracteres comuns e cria um padrão de validação de e-mail funcional passo a passo.

  • 🧩 O que é Regex: Uma expressão regular é um padrão que descreve um texto, permitindo que uma única função valide, pesquise ou transforme cadeias de caracteres.
  • preg_match: A função `preg_match` testa se um padrão aparece em uma string e retorna verdadeiro na primeira correspondência, ideal para validação.
  • ✂️ preg_split: A função `preg_split` divide uma string em um array sempre que o padrão ocorre, como por exemplo, dividindo uma frase por espaços.
  • 🔁 preg_replace: A função `preg_replace` encontra todas as ocorrências de um padrão e as substitui por um novo texto, sendo útil para a criação de modelos e para a coloração de sintaxe.
  • 🔤 Metacaracteres: Símbolos como ., ^, $, *, e + criam padrões complexos, por exemplo, ancorando uma correspondência ao início ou ao fim.
  • 📧 Modelo de e-mail: Classes de caracteres e quantificadores se combinam em um único padrão que verifica se um endereço de e-mail está bem formado.
  • 🤖 Assistência de IA: As ferramentas de IA podem escrever uma expressão regular a partir de uma descrição simples e explicar ou depurar um padrão complexo já existente.

Expressões regulares em PHP

O que é uma expressão regular em PHP?

Expressões regulares em PHPExpressões regulares, também conhecidas como regex, são uma ferramenta poderosa de correspondência de padrões que pode ser executada em uma única expressão. Elas usam caracteres especiais como +, - e ^ para criar expressões complexas. Podem ajudar você a realizar tarefas como validar endereços de e-mail, endereços IP e muito mais.

Por que usar expressões regulares

  • As expressões regulares em PHP simplificam a identificação de padrões em dados de string chamando uma única função. Isso nos economiza tempo de programação.
  • Ao validar dados inseridos pelo usuário, como endereços de e-mail, nomes de domínio, números de telefone e endereços IP.
  • Destacando palavras-chave nos resultados de pesquisa
  • Ao criar um modelo HTML personalizado. Regex em PHP pode ser usado para identificar as tags do modelo e substituí-las por dados reais.

Funções de expressão regular integradas em PHP

O PHP possui funções integradas que nos permitem trabalhar com expressões regulares, as quais aprenderemos neste tutorial. Vamos analisar as funções de expressão regular mais utilizadas em PHP.

  • A função `preg_match()` em PHP é usada para realizar a correspondência de padrões em uma string. Ela retorna `true` se uma correspondência for encontrada e `false` caso contrário.
  • A função `preg_split()` em PHP é usada para realizar uma correspondência de padrões em uma string e, em seguida, dividir os resultados em uma matriz numérica.
  • preg_replace() em PHP – esta função é usada para realizar uma correspondência de padrão em uma string e então substituir a correspondência pelo texto especificado.

A seguir está a sintaxe para uma função de expressão regular, como preg_match(), preg_split() ou preg_replace().

<?php
function_name('/pattern/',subject);
?>

AQUI,

  • “function_name(…)” é preg_match(), preg_split() ou preg_replace().
  • “/…/” as barras invertidas denotam o início e o fim da nossa expressão regular.
  • “'/pattern/'” é o padrão que precisamos corresponder.
  • “assunto” é a string de texto a ser comparada

Vejamos agora exemplos práticos que implementam as funções regex do PHP acima.

Preg_match() em PHP

O primeiro exemplo usa a função preg_match() para realizar uma correspondência de padrão simples para a palavra "guru" em um determinado texto. URL.

O código abaixo mostra a implementação da função preg_match() para o exemplo acima.

<?php
$my_url = "www.guru99.com";
if (preg_match("/guru/", $my_url))
{
echo "the url $my_url contains guru";
}
else
{
echo "the url $my_url does not contain guru";
}
?>

Navegue até o URL http://localhost/phptuts/preg_match_simple.php

Funções de expressão regular integradas

Vamos examinar a parte do código responsável pela nossa saída. preg_match('/guru/', $my_url). AQUI,

  • “preg_match(…)” é a função regex do PHP
  • “'/guru/'” é o padrão de expressão regular a ser correspondido
  • “$my_url” é a variável que contém o texto a ser comparado.

PHP Preg_split()

Vejamos agora outro exemplo que utiliza a função preg_split().

Pegaremos uma frase de string e a explodiremos em um array; o padrão a ser correspondido é um espaço único.

A string de texto a ser usada neste exemplo é “I Love Regular Expressions”.

O código abaixo ilustra a implementação do exemplo acima.

<?php

$my_text = "I Love Regular Expressions";

$my_array = preg_split("/ /", $my_text);

print_r($my_array );

?>

Navegue até o URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Vamos agora analisar a função preg_replace(). Função PHP que executa uma correspondência de padrão e depois substitui o padrão por outra coisa.

O código abaixo procura a palavra guru em um corda.

Substitui a palavra "guru" pela palavra "guru" cercada por código CSS que destaca a cor de fundo.

<?php

$text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com";

$text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text);

echo $text;

?>

Supondo que você tenha salvo o arquivo preg_replace.php, navegue até o URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Metacaracteres de Expressão Regular

Os exemplos acima usaram padrões muito básicos. Os metacaracteres permitem realizar correspondências de padrões mais complexas, como testar a validade de um endereço de e-mail. Vejamos agora os metacaracteres mais comuns.

Metacaractere Descrição Exemplo
. Corresponde a qualquer caractere único, exceto uma nova linha /./ corresponde a qualquer coisa que tenha um único caractere
^ Corresponde ao início de uma sequência de caracteres ou exclui caracteres. /^PH/ corresponde a qualquer string que comece com PH
$ Corresponde a um padrão no final da string. /com$/ corresponde a guru99.com, yahoo.com etc.
* Corresponde a zero ou mais dos caracteres anteriores. /com*/ corresponde a computador, comunicação etc.
+ Exige que o(s) caractere(s) anterior(es) apareça(m) pelo menos uma vez. /yah+oo/ corresponde ao Google
\ Usado para escapar de metacaracteres /yahoo+\.com/ trata o ponto como um valor literal
[...] Classe de personagem /[abc]/ corresponde a a, b ou c
AZ Corresponde a letras minúsculas /az/ corresponde a legal, feliz etc.
AZ Corresponde a letras maiúsculas /AZ/ corresponde a O QUE, COMO, POR QUE etc.
0-9 Corresponde a qualquer número entre 0 e 9 /0-4/ corresponde a 0,1,2,3,4

A lista acima fornece apenas os metacaracteres mais comumente usados ​​em expressões regulares.

Vejamos agora um exemplo bastante complexo que verifica a validade de um endereço de e-mail.

<?php
$my_email = "name@company.com";
if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) {
echo "$my_email is a valid email address";
}
else
{
echo "$my_email is NOT a valid email address";
}
?>

Explicando o padrão de validação de e-mail

AQUI,

  • “/…/” inicia e termina a expressão regular
  • “^[a-zA-Z0-9._-]” corresponde a quaisquer letras minúsculas ou maiúsculas, números entre 0 e 9 e pontos, sublinhados ou traços.
  • “+@[a-zA-Z0-9-]” corresponde ao símbolo @ seguido por letras minúsculas ou maiúsculas, números entre 0 e 9 ou hífens.
  • “+\.[a-zA-Z.]{2,5}$/” escapa o ponto usando a barra invertida e, em seguida, corresponde a quaisquer letras minúsculas ou maiúsculas com um comprimento de caractere entre 2 e 5 no final da string.

Navegue até o URL http://localhost/phptuts/preg_match.php

Padrão de Validação de E-mail em PHP

Como você pode ver na análise acima, os metacaracteres são muito poderosos quando se trata de identificar padrões.

Perguntas Frequentes

`preg_match` para na primeira correspondência e preenche `$matches` com esse único resultado. `preg_match_all` encontra todas as correspondências na string e as retorna em um array aninhado, o que é adequado para exemplos.tracitens repetidos.

Os modificadores seguem o delimitador de fechamento e alteram o comportamento de correspondência. O modificador i torna o padrão insensível a maiúsculas e minúsculas, m trata cada linha separadamente para ^ e $, e s permite que o ponto corresponda a novas linhas, como em /guru/i.

Envolva partes do padrão em parênteses para criar grupos de captura. Após preg_match, a correspondência completa está em $matches[0] e cada grupo segue em $matches[1], $matches[2] e assim por diante.

Sim. Descreva o texto que deseja encontrar, como um número de telefone ou formato de data, e a IA pode gerar o padrão, além de um exemplo de correspondência de padrões (preg_match). Teste-o com entradas reais e casos extremos antes de confiar nele.

Sim. Cole o padrão e a IA poderá analisá-lo token por token, explicar a que cada parte corresponde e apontar por que falha em determinadas entradas, sugerindo então uma versão corrigida.

Resuma esta postagem com: