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

Máscaras para CPF, CNPJ e outros tipos de dados com PHP
23/05/2021PHP

Máscaras para CPF, CNPJ e outros tipos de dados com PHP

Neste artigo você vai ver exemplos de como aplicar máscaras em dados utilizando PHP

Saiba mais...
Removendo acentos e caracteres especiais com PHP
07/06/2020PHP

Removendo acentos e caracteres especiais com PHP

Veja como remover acentos e caracteres especiais com PHP

Saiba mais...

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