PHP Classes
elePHPant
Icontem

File: validacao.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Renan Martins Pimentel  >  Validar dados  >  validacao.php  >  Download  
File: validacao.php
Role: Class source
Content type: text/plain
Description: validar-dados
Class: Validar dados
Validate text values of several types
Author: By
Last change: Adicionado as informaÁűes do autor.
Date: 2 years ago
Size: 4,371 bytes
 

Contents

Class file image Download
<?php
/**
* @author Renan Martins Pimentel <renan.pimentel@gmail.com>
*/
class ValidarDados
{
   
/**
     * Express√£o Regular para verificar se √© um e-mail v√°lido
     * @var string
     */
   
private $expressaoEmail = "/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/";

   
/**
     * Express√£o Regular para mostrar apenas n√ļmeros
     * @var string
     */
   
private $expressaoNumero = "([^0-9])";

   
/**
     * Express√£o regular para manipular o espa√ßo na string
     * @var string
     */
   
private $expressaoDataEspaco = "/[[:space:]]/";

   
/**
     * Express√£o regular para escapar as barras (/) e (-)
     * @var string
     */
   
private $expressaoDataEscapar = "/[\/,-]/";

    public
$emailErro = "Email inv√°lido";
    public
$emailCerto = "Email v√°lido";
    public
$cpfErro = "CPF inv√°lido";
    public
$cnpjErro = "CNPJ inv√°lido";

   
/**
     * Verifica se um email √© v√°lido, utilizando express√£o regular
     * @param string $email Informa√ß√£o para ser validado
     * @return string Retorna uma mensagem, v√°lido ou inv√°lido.
     */
   
public function verificarEmail($email)
    {
        if(!
preg_match($this->expressaoEmail, $email))
            return
$this->emailErro;
        else
            return
$this->emailCerto;
    }

   
/**
     * Extrair todos os caracteres que n√£o pertencam ao intervalo 0-9
     * @param string $string Valor de entrada a ser tratado
     * @return int Valor retornado depois do tratamento
     */
   
public function apenasNumeros($string)
    {
        return
ereg_replace($this->expressaoNumero, "", $string);
    }

   
/**
     * Converter data SQL do tipo OOOO-OO-OO 00:00:00 (EUA) para 00/00/0000 (PT-BR)
     * @param string $data Data do formato OOOO-OO-OO 00:00:00 (EUA)
     * @return string Data do formato 00/00/0000 (PT-BR)
     */
   
public function converterDataSql($data)
    {
       
//Verificar se existe a informação
       
if(!isset($data)){
            return
NULL;
        }

       
//Separando em array a DATA e o HORARIO
       
list($dataTemporario, $horaTemporario) = preg_split($this->expressaoDataEspaco, $data);
       
       
//Criando um array somente para data
       
list($ano, $mes, $dia) = preg_split($this->expressaoDataEscapar, $dataTemporario);
       
        return
$dia . "/" . $mes . "/" . $ano;
    }

   
/**
     * Verificar se o CPF inserido √© valido
     * @param string $cpf
     * @return Int
     */
   
public function Cpf($cpf)
    {
       
//Verificar se existe a informação
       
if(!isset($cpf)){
            return
NULL;
        }

       
$cpf = str_pad($this->apenasNumeros($cpf), 11, '0',STR_PAD_LEFT);

        for(
$numeros=0; $numeros<=9; $numeros++){
            if(
$cpf == str_pad('', 11, $numeros, STR_PAD_LEFT))
                return
$this->cpfErro;
        }

        for(
$tamanho = 9; $tamanho < 11; $tamanho++) {
            for(
$digito = 0, $caracteres = 0; $caracteres < $tamanho; $caracteres++) {
               
$digito += $cpf{$caracteres} * (($tamanho + 1) - $caracteres);
            }

           
$digito = ((10 * $digito) % 11) % 10;

            if (
$cpf{$caracteres} != $digito) {
                return
false;
            }
        }

        return
$cpf;
    }

   
/**
     * Verificar se o CNPJ inserido √© valido
     * @param string $cpf
     * @return Int
     */
   
public function Cnpj($cnpj)
    {
       
//Verificar se existe a informação
       
if(( ! isset($cnpj)) || (strlen($cnpj) != 18) ){
            return
NULL;
        }

       
$primeiraSoma = ($cnpj[0] * 5) +
        (
$cnpj[1] * 4) +
        (
$cnpj[3] * 3) +
        (
$cnpj[4] * 2) +
        (
$cnpj[5] * 9) +
        (
$cnpj[7] * 8) +
        (
$cnpj[8] * 7) +
        (
$cnpj[9] * 6) +
        (
$cnpj[11] * 5) +
        (
$cnpj[12] * 4) +
        (
$cnpj[13] * 3) +
        (
$cnpj[14] * 2);

       
$resto = $primeiraSoma % 11;
       
       
$primeiroDigito = $resto < 2 ? 0 : 11 - $resto;

       
$segundaSoma = ($cnpj[0] * 6) +
        (
$cnpj[1] * 5) +
        (
$cnpj[3] * 4) +
        (
$cnpj[4] * 3) +
        (
$cnpj[5] * 2) +
        (
$cnpj[7] * 9) +
        (
$cnpj[8] * 8) +
        (
$cnpj[9] * 7) +
        (
$cnpj[11] * 6) +
        (
$cnpj[12] * 5) +
        (
$cnpj[13] * 4) +
        (
$cnpj[14] * 3) +
        (
$cnpj[16] * 2);
       
       
$resto = $segundaSoma % 11;
       
$segundoDigito = $resto < 2 ? 0 : 11 - $resto;
       
        if((
$cnpj[16] == $primeiroDigito) && ($cnpj[17] == $segundoDigito))
            return
$this->apenasNumeros($cnpj);
        else
            return
$this->cnpjErro;
    }

}

?>