<?php
/*
* Classe para validação de CNPJ
* Copyright (c) Sebastião Farias Júnior 2002
* Belém/PA
* E-mail: hide@address.com
* Licença GNU
* Modo de usar:
* $oCpf = new cpf;
* if ($oCpf->verifica_cpf($cpf)){
* echo "CPF valido";
* }
* else{
* echo "CPF invalido";
* }
*/
class cpf{
var $expressao_regular_de_cpf="[0-9]{3}\\.?[0-9]{3}\\.?[0-9]{3}-?[0-9]{2}";
/**
* cpf::clim()
* Tiras espaços e tabulações
* @param $cnpj
* @return
*/
function clim($cpf){
$cpf=ereg_replace("[ ]*[ ]*","",$cpf);
return $cpf;
}
/**
* cpf::isNUMB()
* verifica se digitou so numeros e tem 11 digitos
* @param $cnpj
* @return
*/
function isNUMB($cpf){
//1 - somente número e tem 11 digitos
//0 - não e só número ou não tem 11 digitos
$digitos=ereg_replace("[-. \t]","",$cpf);
if(!ereg("^".$this->expressao_regular_de_cpf."\$",$digitos)){
return 0;
}
return 1;
}
/**
* cpf::checaCPF()
* Função que verifica se o cpf é valido ou não
* @param $cpf
* @return
*/
function checaCPF($cpf) {
if (strlen($cpf)!= 11 || $cpf == "00000000000" || $cpf == "11111111111" ||
$cpf == "22222222222" || $cpf == "33333333333" || $cpf == "44444444444" ||
$cpf == "55555555555" || $cpf == "66666666666" || $cpf == "77777777777" ||
$cpf == "88888888888" || $cpf == "99999999999")
return 0;
$soma = 0;
for ($i=0; $i < 9; $i ++)
$soma += (int)(substr($cpf,$i,1)) * (10 - $i);
$resto = 11 - ($soma % 11);
if ($resto == 10 || $resto == 11)
$resto = 0;
if ($resto != (int)(substr($cpf,9,1)))
return 0;
$soma = 0;
for ($i = 0; $i < 10; $i ++)
$soma += (int)(substr($cpf,$i,1)) * (11 - $i);
$resto = 11 - ($soma % 11);
if ($resto == 10 || $resto == 11)
$resto = 0;
if ($resto != (int)(substr($cpf,10,1)))
return 0;
return 1;
}
/**
* cpf::verifica_cpf()
* Função chamadora para validação do cpf
* @param $cpf
* @return
*/
function verifica_cpf($cpf) {
$cpf = $this->clim($cpf);
if($this->isNUMB($cpf) != 1)
{
return 0;
}
if ($this->checaCPF($cpf)) {
return 1;
}
else {
return 0;
}
}
}
?>