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