Vamos ver alguns exemplos de como trabalhar com a localização e substituição de dados, utilizando expressões regulares com PHP.
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 = "/d{2}/d{2}/d{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 = "/d{2}/d{2}/d{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 = "/d{2}/d{2}/d{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);
Quer conferir mais dicas sobre PHP? Clique aqui e veja mais dicas!

Veja outros conteúdos que podem ser de seu interesse
Criar PDF com PHP
22/11/2020
Um exemplo de como criar um PDF de forma fácil usando PHP