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

Calculando distâncias com PHP
04/06/2023PHP

Calculando distâncias com PHP

Veja como calcular a distância entre duas coordenadas com PHP

Saiba mais...
Criar PDF com PHP
22/11/2020PHP

Criar PDF com PHP

Um exemplo de como criar um PDF de forma fácil usando PHP

Saiba mais...

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