PHP preg_match(): Expressões Regulares (Regex)
O que é expressão regular em PHP?
Expressão regular PHP também conhecidos como regex, são algoritmos poderosos de correspondência de padrões que podem ser executados em uma única expressão. Expressões regulares usam operadores aritméticos como (+,-,^) para criar expressões complexas. Eles podem ajudá-lo a realizar tarefas como validação de endereços de e-mail, endereços IP, etc.
Por que usar expressões regulares
- As expressões regulares do PHP simplificam a identificação de padrões em dados de string chamando uma única função. Isso nos economiza tempo de codificação.
- Ao validar entradas do usuário, como endereço de e-mail, nomes de domínio, números de telefone, 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 funções regulares que aprenderemos neste tutorial de Expressões Regulares do PHP. Vejamos as funções de expressão regular comumente usadas em PHP.
- preg_match() em PHP – esta função é usada para realizar correspondência de padrões em PHP em uma string. Ele retorna verdadeiro se uma correspondência for encontrada e falso se uma correspondência não for encontrada.
- preg_split() em PHP – esta função é usada para realizar uma correspondência de padrão em uma string e então dividir os resultados em um array numérico
- 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.
Abaixo está a sintaxe para uma função de expressão regular, como PHP preg_match(), PHP preg_split() ou PHP preg_replace().
<?php function_name('/pattern/',subject); ?>
AQUI,
- “function_name(…)” é PHP preg_match(), PHP preg_split() ou PHP preg_replace().
- “/…/” As barras indicam o início e o fim de nossa função de testador de regex PHP
- “'/pattern/'” é o padrão que precisamos combinar
- “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() na função PHP para realizar uma correspondência de padrão simples para a palavra guru em um determinado URL.
O código abaixo mostra a implementação da função de testador 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
Vamos examinar a parte do código responsável pela nossa saída “preg_match('/guru/', $meu_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.
O diagrama abaixo resume os pontos acima
PHP Preg_split()
Vejamos agora outro exemplo que usa preg_split() na função PHP.
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_replace()
Vejamos agora o preg_replace() em 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.
Ele 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ê salvou o arquivo preg_replace.php, navegue na URL http://localhost/phptuts/preg_replace.php
Metacaracteres de Expressão Regular
Os exemplos acima usaram padrões muito básicos; metacaracteres simplesmente nos permitem realizar correspondências de padrões mais complexas, como testar a validade de um endereço de e-mail. Vejamos agora os metacaracteres comumente usados.
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 ou string/exclui caracteres | /^PH/ corresponde a qualquer string que comece com PH |
$ | Corresponde ao padrão no final da string | /com$/ corresponde a guru99.com,yahoo.com etc. |
* | Corresponde a qualquer zero (0) ou mais caracteres | /com*/ corresponde a computador, comunicação etc. |
+ | Requer que os caracteres anteriores apareçam 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 abc |
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 “[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] ”
AQUI,
- “'/…/'” inicia e termina a expressão regular
- “^[a-zA-Z0-9._-]” corresponde a quaisquer letras maiúsculas ou minúsculas, números entre 0 e 9 e pontos, sublinhados ou traços.
- “+@[a-zA-Z0-9-]” corresponde ao símbolo @ seguido de letras maiúsculas ou minúsculas, números entre 0 e 9 ou travessões.
- “+\.[a-zA-Z.]{2,5}$/” escapa do ponto usando a barra invertida e corresponde a quaisquer letras maiúsculas ou minúsculas com comprimento de caracteres entre 2 e 5 no final da string.
Navegue até o URL http://localhost/phptuts/preg_match.php
Como você pode ver no exemplo acima, os metacaracteres são muito poderosos quando se trata de correspondência de padrões.
Resumo
- Uma expressão regular ou Regex em PHP é um algoritmo de correspondência de padrões
- Expressões regulares são muito úteis ao realizar verificações de validação, criar sistemas de modelos HTML que reconhecem tags, etc.
- PHP possui funções integradas, nomeadamente PHP preg_match(), PHP preg_split() e PHP preg_replace() que suportam expressões regulares.
- Metacaracteres nos permitem criar padrões complexos