Validador PHP de Expressões Regulares
Olá o assunto hoje é Expressão Regular no PHP.
Talvez você, assim como eu, já quis facilitar seu trabalho de programação na hora de validar um campo, seja ele CPF, CNPJ entre outros. O caminho, via de regra, é "if s intemináveis", aquele monte de comparação, para cada tipo de caracter, etc. Ou aquelas equações cheias de {}[]()/.\/ entre outros símbolos que assustam.
Bom, me assustei bastante, mas continuei, insisti e vi que era legal. Então vou tentar compartilhar um pouco do apreendido com as experiências, e mais, acabei por construir um simples, mas útil Validador de Expressões Regulares.
Expressão Regular é algo que lhe permite diminuir para uma linha uma dezena de IFs. Pra compreender o que é, existe o EXCELENTE LIVRO DO AURÉLIO MARINHO gratuito e online.
O Projeto é bastante simples e consiste de duas páginas php.
Aqui você pode testá-lo: Projeto no Ar
Pra executar em modo local, na sua máquina, é necessário ter o PHP e o Apache configurados, e pra quem ainda não tem recomendo o WAMPSERVER, que instala e configura tudo pra você.
Como editor de texto você pode usar até o bloco de notas, mas existem alguns que lhe facilitam demais a vida. O que costumo usar é o Notepad++ que além de permitir a sintaxe PHP, também é gratuito. Outra característica muito interessante pra quem faz sites compatíveis com UTF-8 é a opção de formatar e salvar o arquivo já nesse formato, para que as palavras com acento apareçam corretamente.
Links:
FONTES DO PROJETO
Você já deve ter procurado muito sobre esse assunto na internet, de forma que serei breve e passarei ao código fonte.
Para utilizar, abra o Notepad++, menu Formatar e marque "Codificação em UTF-8 (sem BOM)", com isso as palavras sairão acentuadas corretamente. Isso é necessário porque estou especificando no < head > esse charset.
Cole o conteúdo do arquivo abaixo e salve-o como INDEX.PHP. Repita para o EXP_REG.PHP.
Salve ambos na pasta www que o WAMPSERVER criou pra você, ela deve estar em: C:\wamp\www\
Agora, entre no seu navegador e digite: LOCALHOST/INDEX.PHP
Este arquivo é o INDEX.PHP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="title" content="Validador de Expressões Regulares">
<meta name="description" content="Valida expressões regulares">
<meta name="keywords" content="validador,expressões regulares,php">
<meta name="autor" content="Claudio Segura">
<meta name="revisit-after" content="15">
<style type="text/css">
#formulario {
background-color: #61B5D4;
float:left;
}
#formulario h1{
font: bold 20px Trebuchet Ms, Verdana, Arial, Tahoma, Sans-Serif;
color: #426B00;
text-transform:uppercase;
text-align: center;
margin-top: 7px;
}
#corpo {
clear:both;
background-color: #AAAA77;
}
#corpo h3{
font: bold 14px Trebuchet Ms, Verdana, Arial, Tahoma, Sans-Serif;
color: #426B00;
text-transform:uppercase;
}
#corpo p{
font: 14px/20px Arial,Tahoma, Sans-Serif;
color: #164348;
margin-botton:0px;
}
#exemplo1{
float:left;
margin-left: 20px;
}
#exemplo2{
float:left;
margin-left: 20px;
}
</style>
</head>
<body>
<div id="formulario">
<table border=1><tr><td>
<h1>Validador PHP de Experessões Regulares</h1>
<form method="post" action="exp_reg.php">
<fieldset>
<p><label><Input type = 'Radio' Name ='tipo' value= 'match'>Preg_match (Encontrar uma coincidência no texto)</label></p>
<p><label><Input type = 'Radio' Name ='tipo' value= 'replace'>Preg_replace (Encontrar no texto e substituir pelo conteúdo)</label></p>
Escolha do menu a Expressão Regular
<select name="dropdown" value="options">
<option value="">Digitar uma expressão</option>
<option value="(^([\d]|1[0,1,2])/([0-9]|[0,1,2][0-9]|3[0,1])/\d{4}$)">Data</option>
<option value="(^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$)">Email</option>
<option value="(\b([0-9]{3}\.?){3}\-?[0-9]{2}\b)">CPF</option>
<option value="(\b([0-9]{2}\.?)([0-9]{3}\.?){2}\/?([0-9]{4})\-?([0-9]{2})\b)">CNPJ</option>
<option value="(\b[0-9]{2}\.?[0-9]{3}-[0-9]{3}\b)">CEP</option>
</select>
<p><label>ou digite uma Expressão: <input name="expressao" type="text" size="100"/></label></p>
<p><label>Conteudo: <input name="conteudo" type="text" size="100"/></label></p>
<p><label>Texto: <input name="texto" type="text" size="100"/></label>
</fieldset>
<p>
<input type="submit" value=" Enviar " name="submit">
<input type="reset" value=" Limpar " name="reset">
</form>
</td></tr></table>
</div>
<div id='corpo'>
<div id='Exemplo1'>
<p>Exemplo: preg_replace:</p>
<h3>Retirar formatação de um CPF ou CNPJ:</h3>
<p>Selecione: preg_replace</p>
<p>Expressão: ([\.\-\/\' '])</p>
<p>Conteúdo: deixe em branco equivale a ' '</p>
<p>texto:12.234.345/0002-23</p>
<hr>
<h3>Formatar CPF:</h3>
<p>Selecione: preg_replace</p>
<p>Expressão: (([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{2}))</p>
<p>Conteúdo: $1.$2.$3-$4</p>
<p>texto:12234345023</p>
<hr>
<h3>Formatar CNPJ:</h3>
<p>Selecione: preg_replace</p>
<p>Expressão: (([0-9]{2})([0-9]{3})([0-9]{3})([0-9]{4})([0-9]{2}))</p>
<p>Conteúdo: $1.$2.$3/$4-$5</p>
<p>texto:12234345000134</p>
<hr>
</div>
<div id='Exemplo2'>
<p>exemplo: preg_match:</p>
<h3>Procurar CPF:</h3>
<p>Selecione: preg_match</p>
<p>Expressão: Selecione do menu CPF</p>
<p>Conteúdo: deixe em branco</p>
<p>texto:01.234.567-89</p>
<hr>
<h3>Procurar CNPJ:</h3>
<p>Selecione: preg_replace</p>
<p>Expressão: Selecione do menu CNPJ</p>
<p>Conteúdo: deixe em branco</p>
<p>texto:12.234.345/0002-23</p>
<hr>
</div>
</div>
</body>
</html>
Este outro é o EXP_REG.PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="title" content="Validador de Expressões Regulares">
<meta name="description" content="Valida expressões regulares">
<meta name="keywords" content="validador,expressões regulares,php">
<meta name="autor" content="Claudio Segura">
<meta name="revisit-after" content="15">
</head>
<body>
<?php
$expressao=$_POST['dropdown'];
if ($expressao==""){
$expressao=$_POST['expressao'];
}
$conteudo=$_POST['conteudo'];
$texto=$_POST['texto'];
if ($_POST['tipo']=='match'){
if (preg_match($expressao,$texto,$resp)){
echo 'Expressão: '.$expressao;
echo '<p>';
echo 'Texto: '.$texto;
echo '<p>';
echo 'Resultado: [POSITIVO] - '.$resp[0].' encontrado';
}else{
echo 'Resultado: [NEGATIVO] - O texto não apresenta nada como a expressão sugere.';
}
}else{
$resp=preg_replace($expressao,$conteudo,$texto);
echo 'Expressão: '.$expressao;
echo '<p>';
echo 'Conteúdo: '.$conteudo;
echo '<p>';
echo 'Texto: '.$texto;
echo '<p>';
echo 'Resultado: '.$resp;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="title" content="Validador de Expressões Regulares">
<meta name="description" content="Valida expressões regulares">
<meta name="keywords" content="validador,expressões regulares,php">
<meta name="autor" content="Claudio Segura">
<meta name="revisit-after" content="15">
</head>
<body>
<?php
$expressao=$_POST['dropdown'];
if ($expressao==""){
$expressao=$_POST['expressao'];
}
$conteudo=$_POST['conteudo'];
$texto=$_POST['texto'];
if ($_POST['tipo']=='match'){
if (preg_match($expressao,$texto,$resp)){
echo 'Expressão: '.$expressao;
echo '<p>';
echo 'Texto: '.$texto;
echo '<p>';
echo 'Resultado: [POSITIVO] - '.$resp[0].' encontrado';
}else{
echo 'Resultado: [NEGATIVO] - O texto não apresenta nada como a expressão sugere.';
}
}else{
$resp=preg_replace($expressao,$conteudo,$texto);
echo 'Expressão: '.$expressao;
echo '<p>';
echo 'Conteúdo: '.$conteudo;
echo '<p>';
echo 'Texto: '.$texto;
echo '<p>';
echo 'Resultado: '.$resp;
}
echo "<a href='index.php'>Retornar</a>";
?>
</body>
</html>
?>
</body>
</html>
Bom então é isso. Bom divertimento. :)