domingo, 16 de setembro de 2012

Função para Validar CPF com PHP

Pessoal, boa noite.
Para quem procura uma função php que valide CPF com muitos critérios de teste,
segue uma que utilizo muito em meus desenvolvimentos:










function validaCpf($cpf)
{

    $cpf = trim($cpf);
    $cpf = str_pad(preg_replace('/[^0-9]/', '', $cpf), 11, '0', STR_PAD_LEFT);
    $j = 0;


    for($i = 0 ; $i<(strlen($cpf)) ; $i++)
    {
        if(is_numeric($cpf[$i]))
        {
            $num[$j] = $cpf[$i];
            $j++;
        }
    }


    if(count($num) != 11)
    {
        $cpfValido = 0;
        return false;
    }


    for($i = 0; $i < 10; $i++)
    {
        if ($num[0]==$i && $num[1]==$i && $num[2]==$i && $num[3]==$i && $num[4]==$i && $num[5]==$i && $num[6]==$i && $num[7]==$i && $num[8]==$i)
        {
            $cpfValido = 0;
            break;
        }
    }

    for ($t = 9; $t < 11; $t++)
    {
        for ($d = 0, $c = 0; $c < $t; $c++)
        {
            $d += $cpf{$c} * (($t + 1) - $c);
        }
        $d = ((10 * $d) % 11) % 10;

        $cpfValido = $cpf{$c} != $d ? 0 : $cpfValido;
    }

 
    //Calcula e compara o primeiro dígito verificador.
    if(!isset($cpfValido))
    {
        $j=10;
        for($i = 0; $i < 9 ; $i++)
        {
            $mult[$i]=$num[$i]*$j;
            $j--;
        }
        $soma = array_sum($mult);   
        $resto = $soma % 11;           
        if($resto < 2)
            $digito1 = 0;
        else
            $digito1 = 11 - $resto;
       
        if($digito1!=$num[9])
            $cpfValido = 0;
    }

 
    //Calcula e compara o segundo dígito verificador.
    if(!isset($cpfValido))
    {
        $j = 11;
        for($i = 0 ; $i < 10 ; $i++)
        {
            $mult[$i]=$num[$i]*$j;
            $j--;
        }
        $soma = array_sum($mult);
        $resto = $soma % 11;
        if($resto < 2)
            $digito2 = 0;
        else
            $digito2 = 11 - $resto;
       
        if($digito2!=$num[10])
            $cpfValido = 0;
        else
            $cpfValido = 1;
    }
   
    return $cpfValido == 1 ? true : false;
}//DOMINUS - 16.09.2012


Em breve veremos uma função que utilizo para validação de CNPJ... até mais

Nenhum comentário:

Postar um comentário

Palavrões e comentários não agregadores de valores e conhecimentos serão descartados