<? error_reporting(E_ALL); ini_set('display_errors', "On"); function VALIDACPF($cpf) { /* FACICOMP - Faculdade de Ci�ncia da Computa��o de Caratinga Bruno Rodrigues Silva 28/11/2000 brunors@spep.com.br Modificado para funcao por: Clever Anjos (clever@acip.org.br) 10/02/2002 Foi retirado o array auxiliar. Roberth Oliveira Corgosinho (roberthlinux@zipmail.com.br) 14/11/2002 Foi adicionado um laco de repeticao para remover os caracteres nao numericos da string do CPF Bruno F. C. Silva ( bruno@sofolha.com.br ) Foi alterado o laco de repeticao para remover caracteres numericos pela funcao ereg_replace O laco que verificava se o cpf pertencia aos numeros nulos foi alterado pela funcao in_array */ $nulos = array("12345678909","11111111111","22222222222","33333333333", "44444444444","55555555555","66666666666","77777777777", "88888888888","99999999999","00000000000"); /* Retira todos os caracteres que nao sejam 0-9 */ $cpf = ereg_replace("[^0-9]", "", $cpf); /* Retorna falso se o cpf for nulo */ if( in_array($cpf, $nulos) ) return 0; /*Calcula o pen�ltimo d�gito verificador*/ $acum=0; for($i=0; $i<9; $i++) { $acum+= $cpf[$i]*(10-$i); } $x=$acum % 11; $acum = ($x>1) ? (11 - $x) : 0; /* Retorna falso se o digito calculado eh diferente do passado na string */ if ($acum != $cpf[9]){ return 0; } /*Calcula o �ltimo d�gito verificador*/ $acum=0; for ($i=0; $i<10; $i++){ $acum+= $cpf[$i]*(11-$i); } $x=$acum % 11; $acum = ($x > 1) ? (11-$x) : 0; /* Retorna falso se o digito calculado eh diferente do passado na string */ if ( $acum != $cpf[10]){ return 0; } /* Retorna verdadeiro se o cpf eh valido */ return 1; } ?>