Skip to content
World Wide Web Server edited this page Jul 4, 2012 · 3 revisions

Esta Library ajuda a resolver certos problemas de validação de alguns campos comuns para quem trabalha no Brasil, são eles: CEP, CNPJ, CPF e e-mail. Quem quiser colaborar e colocar mais validações, fique à vontade.

[code] <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /**

  • Library Validar
  • @author DGmike http://dgmike.wordpress.com / class validar { /*
    • Retira todos os caracteres que nao forem numericos de uma string
    • @param string $value
    • @return string / function _toNumber ($value) { return preg_replace('/[^0-9]/','',$value); } /*
    • Faz a soma dos produtos de um determinado número decomposto, ate o dois.
    • Por exeplo, _soma (15346,5) efetuará a seguinte equaçao:
    • 51 + 45 + 33 + 24
    • Esta funçao e primordial para as funções de cpf e cnpj
    • @param integer $value
    • @param integer $start
    • @return integer / function _soma ($value,$start) { for ($soma=0,$i=$start,$j=0;$i!=1;$i--,$j++) $soma+=$i$value{$j}; return $soma; } function cep ($uf,$cep) { $cep=self::_toNumber($cep); $uf=strtoupper ($uf); if ($uf=='SP') $regex = '/^([1][0-9]{3}|[01][0-9]{4})' . '[0-9]{3}$/'; else if ($uf=='RJ') $regex = '/^[2][0-8][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='MS') $regex = '/^[7][9][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='MG') $regex = '/^[3][0-9]{4}' . '[0-9]{3}$/'; else if ($uf=='MT') $regex = '/^[7][8][8][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='AC') $regex = '/^[6][9]{2}[0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='AL') $regex = '/^[5][7][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='AM') $regex = '/^[6][9][0-8][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='AP') $regex = '/^[6][89][9][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='BA') $regex = '/^[4][0-8][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='CE') $regex = '/^[6][0-3][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='DF') $regex = '/^[7][0-3][0-6][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='ES') $regex = '/^[2][9][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='GO') $regex = '/^[7][3-6][7-9][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='MA') $regex = '/^[6][5][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='PA') $regex = '/^[6][6-8][0-8][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='PB') $regex = '/^[5][8][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='PE') $regex = '/^[5][0-6][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='PI') $regex = '/^[6][4][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='PR') $regex = '/^[8][0-7][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='RN') $regex = '/^[5][9][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='RO') $regex = '/^[7][8][9][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='RR') $regex = '/^[6][9][3][0-9]{2}' . '[0-9]{3}$/'; else if ($uf=='RS') $regex = '/^[9][0-9]{4}' . '[0-9]{3}$/'; else if ($uf=='SC') $regex = '/^[8][89][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='SE') $regex = '/^[4][9][0-9]{3}' . '[0-9]{3}$/'; else if ($uf=='TO') $regex = '/^[7][7][0-9]{3}' . '[0-9]{3}$/'; else return false; if(!preg_match($regex,$cep)) return false; return true; } /**
    • Valida um e-mail especificado
    • @param string $email
    • @return bool / function email ($email) { $email=trim (strtolower($email)); if (strlen($email)<6) return false; if (!preg_match('/^[a-z0-9]+([._-][a-z0-9]+)@[a-z0-9_-]+(.[a-z0-9]+){0,4}.[a-z0-9]{1,4}$/',$email)) return false; $domain=end (explode ('@',$email)); //if (!gethostbynamel ($domain)) return false; return true; } /**
    • Valida um cpf ou cnpj, dependendo da quantidade de caracteres numericos que a string contiver
    • O cpf ou cnpj podem ser passados com os pontos separadores ou barras
    • @param string $value
    • @return array / function cpfcnpj ($value) { $value=self::_toNumber($value); if ( in_array( strlen($value), array (10,11) ) ) return self::CPF($value,true); if ( in_array( strlen($value), array (14) ) ) return self::CNPJ($value,true); return array ('CPF/CNPJ'); } /*
    • CPF, pode ser passado com separadores
    • @param string $value
    • @param bool $returnArray
    • @return bool|array / function CPF ($value,$returnArray=false) { $value=self::_toNumber($value); if ( !in_array( strlen($value), array (10,11) ) ) return ($returnArray?array('cpf',false):false); if (str_repeat($value{1},strlen($value))==$value) return ($returnArray?array('cpf',false):false); $value=str_pad($value,11,0,STR_PAD_LEFT); if ( in_array($value,array ('12345678909','01234567890','00123456797'))) return ($returnArray?array('cpf',false):false); $soma=self::_soma($value,10); $soma=$soma; $resultado1=($soma==0 || $soma==1)?0:11-$soma; if ($resultado1!=$value{9}) return ($returnArray?array('cpf',false):false); $soma=self::_soma($value,11); $soma=$soma; $resultado2=($soma==0 || $soma==1)?0:11-$soma; return (($resultado2==$value{10})?($returnArray?array('cpf',true):true):($returnArray?array('cpf'):false)); } /*
    • CNPJ, pode ser passado com separadores
    • @param string $value
    • @param bool $returnArray
    • @return bool|array */ function CNPJ ($value,$returnArray=false) { $value=self::_toNumber($value); if ( !in_array( strlen($value), array (14) ) ) return ($returnArray?array('cnpj',false):false); if (str_repeat($value{1},strlen($value))==$value) return ($returnArray?array('cnpj',false):false); if ( in_array($value,array ('12345678901230','01234567890107'))) return ($returnArray?array('cnpj',false):false); $soma=self::_soma($value,5)+self::_soma(substr($value,4),9); $soma=$soma; $resultado1=($soma==0 || $soma==1)?0:11-$soma; if ($resultado1!=$value{12}) return ($returnArray?array('cnpj',false):false); $soma=self::_soma($value,6)+self::_soma(substr($value,5),9); $soma=$soma; $resultado1=($soma==0 || $soma==1)?0:11-$soma; return (($resultado1==$value{13})?($returnArray?array('cnpj',true):true):($returnArray?array('cnpj'):false)); } function senha ($senha,$senha2=null,$minChr=5,$noSpaces=true) { if ( ($noSpaces) && ( strpos ($senha,chr(32)) ) ) return false; if (strlen ($senha)<$minChr) return false; if (($senha2) && ($senha!=$senha2)) return false; return true; } } ?> [/code]
Clone this wiki locally