<?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;
}
}
?>
|