Jardel Bazi • Sistemas Web • Balneário Camboriú • Santa Catarina Jardel Pavan Bazi, Programador WEB, Conhecimento em PHP - JAVA - JavaScript - Jquery - Acadêmico do Curso Superior de Tecnologia em Sistemas para Internet hospedagem de sites,intranet,jardel pavan bazi,php java jquery,programador web,sistemas para internet,sistemas web,univali
Função para checar CPF

Função para checar CPF

abr 11

Muitos programadores tem dúvidas à respeito da validação do cpf.

De acordo com o algoritmo de validação do cpf, montei a função abaixo em php que realizará a validação do número do cpf digitado pelo usuário.

O cpf é passado por parâmetro através da função: checaCpf(numCpf);

Se o cpf existir ele vai retornar TRUE senão FALSE;

A explicação do algoritmo está nos comentários do código.

        /**
        * O CPF é composto por onze algarismos, onde os dois últimos dígitos verificadores, são criados a partir dos nove primeiros.
        **/

        function checaCpf($string)
        {
                //Remove os pontos do cpf
                $string = str_replace('.','', $string);

                //Explode a variavel e transforma em um array
                $array_cpf = explode('-', $string);

                //Pegamos o valor da primeira chave do array
                $cpf = array_shift($array_cpf);

                //Variáveis de soma
                $soma_primeiro = 0;
                $soma_segundo = 0;

                //Arrays contadores
                //O primeiro dígito é calculado com a distribuição dos dígitos 10, 9, 8, 7, 6, 5, 4, 3, 2
                //O segundo dígito é calculado com a distribuição dos dígitos 11,10, 9, 8, 7, 6, 5, 4, 3, 2
                $array_numeros_primeiro = array(10,9,8,7,6,5,4,3,2);
                $array_numeros_segundo = array(11,10,9,8,7,6,5,4,3,2);

                /*
                        Calculo para somar o primeiro digito:
                        ----------------------------------------
                        Multiplica-se o valor de cada coluna com o encontrado no array
                        CPF:               1 1 1 2 2 2 3 3 3
                        Valores Definido: 10 9 8 7 6 5 4 3 2
                                          -------------------
                                          10 9 8 14 12 15 12 9 6

                        Soma todos os valores encontrado da multiplicação: 10 + 9 + 8 + 14 + 12 + 15 + 12 + 9 + 6
                */
                for($x = 0; $x < 9; $x++) $soma_primeiro += (substr($cpf, $x, 1) * $array_numeros_primeiro[$x]);

                $int_primeiro = (int)($soma_primeiro / 11);
                $resto_primeiro = ($soma_primeiro % 11);

                //Se o resto da divisão for menor que 2 o primeiro digito é zero
                //Senão o primeiro digito é o valor obtido da subtração de (11 - $resto_primeiro)
                if($resto_primeiro < 2) $digito_primeiro = 0;
                else $digito_primeiro = 11 - $resto_primeiro;

                /*
                        Calculo para somar o segundo digito:
                        ----------------------------------------
                        Multiplica-se o valor de cada coluna com o encontrado no array
                        CPF:               1  1 1 2 2 2 3 3 3 9
                        Valores Definido: 11 10 9 8 7 6 5 4 3 2
                                          -------------------
                                          11 10 9 16 14 15 12 9 18

                        Soma todos os valores encontrado da multiplicação: 11 + 10 + 9 + 16 + 14 + 15 + 12 + 9 + 18
                */
                for($x = 0; $x < 10; $x++) $soma_segundo += (substr($cpf . $digito_primeiro, $x, 1) * $array_numeros_segundo[$x]);

                $int_segundo = (int)($soma_segundo / 11);
                $resto_segundo = ($soma_segundo % 11);

                //Se o resto da divisão for menor que 2 o segundo digito é zero
                //Senão o segundo digito é o valor obtido da subtração de (11 - $resto_segundo)
                if($resto_segundo < 2) $digito_segundo = 0;                 else $digito_segundo = 11 - $resto_segundo;                                  //Concatena o digito do primeiro valor encontrado com o segundo valor encontrado                 $digito = $digito_primeiro . $digito_segundo;                                  //Verifica se o valor do digito calculado é igual ao valor do digito informado                 if($digito == end($array_cpf)) return true;                 else return false;         }                  //Cpf Teste         $cpf = '111.222.333-99';                  if(!checaCpf($cpf)) echo 'Cpf Inválido';         echo 'Cpf Ok'; ?>

Deixe uma resposta