Localizando e substituindo dados com expressões regulares com PHP

Localizando e substituindo dados com expressões regulares com PHP

Vamos ver alguns exemplos de como trabalhar com a localização e substituição de dados, utilizando expressões regulares com PHP.

Expressões regulares são um recurso que existe em várias linguagens de programação que permitem validar strings de acordo com um determinado padrão. 

Neste primeiro exemplo, vamos localizar a palavra "React" dentro de um texto.

$texto = "Tutoriais sobre NodeJS, React e PHP!";

$regExp = "/React/i";

preg_match($regExp, $texto, $resultado, PREG_OFFSET_CAPTURE);

print_r($resultado);

 

A função "preg_match" foi utilizada para validar uma expressão regular em relação a uma string informada. O primeiro parâmetro é a expressão regular, o segundo é uma string. O terceiro parâmetro é um array que vai ser criado para guardar os resultados, já que pode existir mais de uma ocorrência. Ao printar o array usando a função "print_r", podemos ver detalhes do resultado.

Podemos usar o "preg_match" sem criar um array de resultados. No exemplo a seguir, vamos validar um CEP.

 

$cep = "01223-010";

$regExp = "/^(\d){5}-(\d){3}$/";

if(preg_match($regExp, $cep)) {

    echo "O formato do CEP é válido.";

}

 

E se for necessário substituir alguma informação? Para isso, podemos usar a função "preg_replace". No exemplo a seguir, vamos pegar um CPF com pontos e traço e deixar ele apenas com números.

 

$cpf = "123.456.789-11";

$cpf = preg_replace("/[^0-9]/", "", $cpf);

echo ($cpf);

 

Que tal um exemplo mais complicado? Vamos localizar um e-mail. Existem várias formas de escrever uma expressão para localizar um e-mail, de forma simplificada, o que vamos fazer é procurar um texto que tenha o seguinte formato

(qualquer quantidade de letras ou números)@(qualquer quantidade de letras ou números).(qualquer quantidade de letras ou números)

 

$texto = "O meu e-mail é: teste@teste.com.br. Entre em contato comigo!";

$regExp = "/[._a-zA-Z0-9-]+@[._a-zA-Z0-9-]+/i";

preg_match($regExp, $texto, $resultado, PREG_OFFSET_CAPTURE);

if (count($resultado)==0){

echo "Não foi localizado e-mail";

} else {

echo "E-mail " . $resultado[0][0] . " localizado na posição " . $resultado[0][1];

}

 

Se você retirar o ".br" do e-mail, a pesquisa vai continuar funcionando.

Dentro do array "resultado", cada posição possui dentro um segundo array, mostrando o padrão que foi localizado, e a posição inicial dentro da string.

No próximo exemplo, vamos localizar uma data no formato dd/mm/aaaa.

 

$texto = "Data de entrega: 01/06/2020";

$regExp = "/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/";

preg_match($regExp, $texto, $resultado, PREG_OFFSET_CAPTURE);

if (count($resultado)==0){

echo "Não foi localizada data";

} else {

echo "Data " . $resultado[0][0] . " localizado na posição " . $resultado[0][1];

}

 

Da mesma forma que o exemplo anterior, estamos retornando apenas a primeira ocorrência encontrada.

 

Supondo que a data esteja errada, para fazer a troca de "01/06/2020" para "06/06/2020", utilizaremos o função "preg_replace". O código ficaria da seguinte forma:

 

$texto = "Data de entrega: 01/06/2020";

$regExp = "/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/";

$texto = preg_replace($regExp, "06/06/2020", $texto);

echo $texto;

 

Outra forma de fazer seria utlizando a função "preg_filter":

 

$texto = "Data de entrega: 01/06/2020";

$regExp = "/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/";

$texto = preg_filter($regExp, "06/06/2020", $texto);

echo $texto;

 

Também podemos pesquisar arrays usando expressões regulares, para isso vamos usar a função "preg_grep", vamos pesquisar dentro de um array de produtos e vamos criar um novo array com os produtos que tenham "la" em algum lugar do nome.

 

$nomes = array("Bola", "Tesoura", "Mochila", "Camiseta", "Bermuda", "Panela", "Frigideira");

$regExp = "#la#";

$resultado = preg_grep($regExp, $nomes);

print_r($resultado);

 

Outros conteudos que podem ser de seu interesse

Enviar e-mails com anexos utilizando PHP
20/08/2023PHP

Enviar e-mails com anexos utilizando PHP

Veja duas formas de enviar e-mails com anexos utilizando PHP

Saiba mais...
Combinação e sorteio de números com PHP
10/11/2024PHP

Combinação e sorteio de números com PHP

Veja exemplos práticos de combinações e sorteio de números com PHP

Saiba mais...
Compactar arquivos e fazer download com PHP
21/05/2023PHP

Compactar arquivos e fazer download com PHP

Confira como compactar arquivos e fazer download com PHP

Saiba mais...

Conteúdo sobre banco de dados sem complicação!


Warning: Cannot modify header information - headers already sent by (output started at /home/storage/f/7d/a9/dbins/public_html/blog/post.php:101) in /home/storage/f/7d/a9/dbins/public_html/blog/ga4_track.php on line 11