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

Limpeza e validação de dados com PHP
03/09/2023PHP

Limpeza e validação de dados com PHP

Conceitos básicos de sanitização e validação de dados com PHP

Saiba mais...
Calculando a diferença de dias úteis entre duas datas utilizando PHP
27/03/2022PHP

Calculando a diferença de dias úteis entre duas datas utilizando PHP

Descubra como calcular os dias úteis entre duas datas utilizando PHP

Saiba mais...

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