Você está na página 1de 7

Validar com Expresses Regulares no PHP

27.777 visualizaes 19 16

Nesse artigo irei falar um pouco sobre as poderosas expresses relulares no PHP. Meu objetivo aqui no ensinar sobre elas, mas sim falar como elas podem ser teis para validao de dados.

1. Email
Em muitos casos temos que validar se o usurio preencheu corretamente o campo email com um email vlido, para isso podemos utilizar as expresses relugares:
<?php $email = "faelcalves@hotmail.com"; if (!eregi("^[a-z0-9_\.\-]+@[a-z0-9_\.\-]*[a-z0-9_\-]+\.[a-z]{2,4}$", $email)) { echo "Email invlido"; } ?>

2. Data
Muito til tambm saber se as datas enviadas esto em formato correto, ou seja, DD/MM/AAA:
<?php // VALIDAR DATA NO FORMATO DD/MM/AAAA $data = "22/01/1991"; if (!eregi("^[0-9]{2}/[0-9]{2}/[0-9]{4}$", $data)) { echo "Data em formato invlido."; } ?>

3. CEP
Em alguns casos temos que validar CEP, principalmente quando se trata de ecommerce:
<?php // VALIDAR CEP (XXXXX-XXX) $cep = "17052-150"; if (!eregi("^[0-9]{5}-[0-9]{3}$", $cep)) { echo "CEP invlido"; }

?>

4. Telefone
Bom o telefone pode ser colocado de vrias maneiras, vamos ver algumas delas:
<?php // VALIDAR TELEFONE NO SEGUINTE FORMATO: DDD33333333 $telefone = "01432363810"; if (!eregi("^[0-9]{11}$", $telefone)) { echo "Telefone invlido"; } ?> <?php // VALIDAR TELEFONE NO SEGUINTE FORMATO: 3333-3333 $telefone = "3236-3810"; if (!eregi("^[0-9]{4}-[0-9]{4}$", $telefone)) { echo "Telefone invlido"; } ?> <?php // VALIDAR TELEFONE NO SEGUINTE FORMATO: (DDD) 3333-3333 $telefone = "(014) 3236-3810"; if (!eregi("^\([0-9]{3}\) [0-9]{4}-[0-9]{4}$", $telefone)) { echo "Telefone invlido"; } ?>

5. IP
Talvez no muito utilizado, porm em alguns casos temos que verificar de um endereo IP (IPv4) vlido, portanto utilizamos:
<?php $ip = "189.18.125.183"; if (!eregi("^([0-9]){1,3}.([0-9]){1,3}.([0-9]){1,3}.([0-9]){1,3}$", $ip)) { echo "IP Invlido"; } ?>

6. URL
Validamos tambm se uma URL, ou seja, um endereo de site vlido (com http://):
<?php $url = "http://rafaelcouto.com.br";

if (!preg_match("|^http(s)?://[a-z0-9-]+(\.[a-z0-9-]+)*(:[09]+)?(/.*)?$|i", $url)) { echo "URL invlida"; } ?>

7. CPF
Bom essa no seria a melhor forma para validar um CPF, mais j ajuda, pelo menos em relao a pontuao:
<?php // VALIDAR CPF NO SEGUINTE FORMATO: XXX.XXX.XXX-XX $cpf = "111.444.777-35"; if (!eregi("^([0-9]){3}\.([0-9]){3}\.([0-9]){3}-([0-9]){2}$", $cpf)) { echo "CPF Invlido"; } ?>

- See more at: http://rafaelcouto.com.br/validar-com-expressoes-regulares-nophp/#sthash.EL920Uh6.dpuf Podemos chegar a concluso que com as Expresses Regulares possvel validar praticamente qualquer tipo de dado, esses so alguns exemplos, porm se voc se aprofundar mais em Expresses Regulares poder fazer muito mais. Caso voc que saber mais sobre as Expresses Regulares, recomendo alguns tutoriais: - See more at: http://rafaelcouto.com.br/validar-com-expressoes-regulares-nophp/#sthash.EL920Uh6.dpuf

19 de janeiro de 2009

Classe para validao de dados com PHP


28.746 visualizaes 20 0

Quem programa na web ou mesmo quem trabalha em relao a web, muitas vezes se depara com formulrios e consequentemente com a validao de dados. Porm, eu desenvolvi uma simples classe para que a validao dos dados seja de forma mais rpida, pois voc no precisa ficar repetindo o cdigo toda vez que precisar validar os dados do formulrio. Antes de mais nada, clique aqui para baixar o arquivo de validao. Esta classe valida os seguintes tipos de dados:
// Email validarEmail('valor'); // CEP (XXXXX-XXX) validarCep('valor'); // Data (DD/MM/AAAAA) validarData('valor'); // Telefone (01433333333) validarTelefone('valor'); // CPF (11111111111) validarCpf('valor'); // IP (192.168.10.1) validarIp('valor'); // Numero (1,200,500) validarNumero('nomedoCampo', 'valor'); // Url (http://www.google.com.br) validarUrl('valor'); // Campo vazio, Mnimo/Mximo de Caracteres validarCampo('nomedoCampo', 'valor', 'maximo', 'minimo');

Primeiramente, necessrio incluir o arquivo de validao:


<?php include("validacao.php"); ?>

Ou

<?php require_once("validacao.php"); ?>

Agora j podemos trabalhar com a classe. Vamos supor que o usurio j preencheu um formulrio e nesse arquivo iremos receber os dados dele:
<?php // Incluimos o arquivo de validao include("validacao.php"); // Obtemos os dados do formulrio $nome = $_POST["nome"]; // Nome do usurio $email = $_POST["email"]; // Email do usurio $cep = $_POST["cep"]; // CEP do usurio $id = $_POST["id"]; // ID do usurio $site = $_POST["site"]; // Website do usurio ?>

O cdigo acima somente um exemplo para podemos entender como funciona a classe. Bom, acho que at aqui nenhum segredo, certo? agora que entra a classe de validao, antes de mais nada precisamos instanciar a classe:
<?php // Incluimos o arquivo de validao include("validacao.php"); // Obtemos os dados do formulrio $nome = $_POST["nome"]; $email = $_POST["email"]; $cep = $_POST["cep"]; $id = $_POST["id"]; $site = $_POST["site"]; // Instanciamos a classe $v = new validacao; ?>

J com a classe instanciada, podemos iniciar a validao dos dados, para validarmos o nome por exemplo, vamos utilizar o validarCampo, ou seja:
<?php // Incluimos o arquivo de validao include("validacao.php"); // Obtemos os dados do formulrio $nome = $_POST["nome"]; $email = $_POST["email"]; $cep = $_POST["cep"]; $id = $_POST["id"]; $site = $_POST["site"]; // Instanciamos a classe $v = new validacao; echo $v->validarCampo("Nome", $nome, "25", "2"); /* Caso o nome esteje em branco, tenha mais de 25 caracteres ou menos de 2 caracteres ser retornado um erro */

?>

Agora validamos os outros dados com suas devidas funes:


<?php // Incluimos o arquivo de validao include("validacao.php"); // Obtemos os dados do formulrio $nome = $_POST["nome"]; $email = $_POST["email"]; $cep = $_POST["cep"]; $id = $_POST["id"]; $site = $_POST["site"]; // Instanciamos a classe $v = new validacao; echo $v->validarCampo("Nome", $nome, "25", "2"); echo $v->validarEmail($email); echo $v->validarCep($cep); echo $v->validarNumero("ID", $id); echo $v->validarUrl($site); ?>

Alm da verificao dos dados, temos que saber se houve algum erro para podermos, por exemplo, inserir os dados no banco de dados. Para isso, a classe tambm tem a funo verifica(), que vai verificar se houve algum erro nos dados:
<?php // Incluimos o arquivo de validao include("validacao.php"); // Obtemos os dados do formulrio $nome = $_POST["nome"]; $email = $_POST["email"]; $cep = $_POST["cep"]; $id = $_POST["id"]; $site = $_POST["site"]; // Instanciamos a classe $v = new validacao; echo $v->validarCampo("Nome", $nome, "25", "2"); echo $v->validarEmail($email); echo $v->validarCep($cep); echo $v->validarNumero("ID", $id); echo $v->validarUrl($site); /* Caso no haja nenhum erro, realizamos as aes necessrias com os dados */ if ($v->verifica()) { echo "Os dados esto OK"; } ?>

Pronto, conseguimos validar os dados com um cdigo menor e em menos tempo. Voc tambm pode alterar as mensagens de erro no validacao.php, logo no incio do cdigo possvel customizar as mensagens de acordo com sua necessidade:

<?php class validacao { var $campo; var $valor; var $msg = array(); // Mensagens de erro function mensagens($num, $campo, $max, $min) { $this->msg[0] = "Preencha o campo com um email vlido <br />"; // EMAIL $this->msg[1] = "CEP com formato invlido (Ex: XXXXXXXX) <br />"; // CEP $this->msg[2] = "Data em formato invlido (Ex: DD/MM/AAAA) <br />"; // DATA $this->msg[3] = "Telefone invlido (Ex: 01433333333) <br />"; // TELEFONE $this->msg[4] = "CPF invlido (Ex: 11111111111) <br />"; // CPF $this->msg[5] = "IP invlido (Ex: 192.168.10.1) <br />"; // IP $this->msg[6] = "Preencha o campo ".$campo." com numeros <br />"; // APENAS NUMEROS $this->msg[7] = "URL especificada invlida (Ex: http://www.google.com) <br />"; // URL $this->msg[8] = "Preencha o campo ".$campo." <br />"; // CAMPO VAZIO $this->msg[9] = "O ".$campo." deve ter no mximo ".$max." caracteres <br />"; // MXIMO DE CARACTERES $this->msg[10] = "O ".$campo." deve ter no mnimo ".$min." caracteres <br />"; // MNIMO DE CARACTERES return $this->msg[$num]; } # [....] ?>

Voc pode editar a classe de acordo com sua necessidade, pois talvez no seja muito flexvel, porm por diminuir nosso cdigo, pode ser muito til no dia-a-dia. - See more at: http://rafaelcouto.com.br/classe-para-validacao-de-dados-comphp/#sthash.DB3UtlSF.dpuf

Você também pode gostar