Verificando CPF com PHP
Dica publicada em Linux / Introdução
Verificando CPF com PHP
O primeiro dígito verificador do CPF é calculado utilizando-se o seguinte algoritmo.
Informe os 9 primeiros números em uma tabela informando os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2 na segunda linha da tabela da esquerda para a direita, conforme exemplo abaixo:
O resultado deve ser divido por 11, considerando como quociente apenas o valor inteiro, sendo o resto da divisão utilizado no cálculo do primeiro dígito verificador.
Neste caso o resultado da soma é 162, que dividido por 11 obteremos 14 como quociente e 8 como resto da divisão. Se o resto do cálculo for menor que 2, o primeiro dígito verificador do CPF se torna 0 (zero), caso não seja menor que 2 o valor obtido deve ser subtraído de 11.
Segue a abaixo o código utilizado para realizar o procedimento:
Código para utilizar a função, neste caso estou chamando a página PHP onde foi desenvolvida a função através do comando require.
Até a próxima oportunidade.
Informe os 9 primeiros números em uma tabela informando os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2 na segunda linha da tabela da esquerda para a direita, conforme exemplo abaixo:
1 1 1 4 4 4 7 7 7 10 9 8 7 6 5 4 3 2Multiplique os valores da primeira e segunda linha informando-os numa terceira linha:
1 1 1 4 4 4 7 7 7 10 9 8 7 6 5 4 3 2 10 9 8 28 24 20 28 21 14Some os valores da terceira linha.
O resultado deve ser divido por 11, considerando como quociente apenas o valor inteiro, sendo o resto da divisão utilizado no cálculo do primeiro dígito verificador.
Neste caso o resultado da soma é 162, que dividido por 11 obteremos 14 como quociente e 8 como resto da divisão. Se o resto do cálculo for menor que 2, o primeiro dígito verificador do CPF se torna 0 (zero), caso não seja menor que 2 o valor obtido deve ser subtraído de 11.
Calculando o segundo dígito verificador
No cálculo do segundo dígito verificador utilizaremos o primeiro dígito calculado anteriormente. Montaremos uma tabela igual a tabela anterior, mas incrementando um número 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, pois acrescentamos mais um número:1 1 1 4 4 4 7 7 7 3 11 10 9 8 7 6 5 4 3 2Na etapa seguinte repetiremos o processo feito para calcular o primeiro digito:
1 1 1 4 4 4 7 7 7 3 11 10 9 8 7 6 5 4 3 2 11 10 9 32 28 24 35 28 21 6Façamos novamente a divisão pelo número 11, em seguida devemos dividir o total da soma por 11 e considerando o resto da divisão como explicado anteriormente.
Segue a abaixo o código utilizado para realizar o procedimento:
<?php
function isCpf($cpf){
$cpf = preg_replace("/[^0-9]/", "", $cpf);
$digitoUm = 0;
$digitoDois = 0;
for($i = 0, $x = 10; $i <= 8; $i++, $x--){
$digitoUm += $cpf[$i] * $x;
}
for($i = 0, $x = 11; $i <= 9; $i++, $x--){
if(str_repeat($i, 11) == $cpf){
return false;
}
$digitoDois += $cpf[$i] * $x;
}
$calculoUm = (($digitoUm%11) < 2) ? 0 : 11-($digitoUm%11);
$calculoDois = (($digitoDois%11) < 2) ? 0 : 11-($digitoDois%11);
if($calculoUm <> $cpf[9] || $calculoDois <> $cpf[10]){
return false;
}
return true;
}
?>
function isCpf($cpf){
$cpf = preg_replace("/[^0-9]/", "", $cpf);
$digitoUm = 0;
$digitoDois = 0;
for($i = 0, $x = 10; $i <= 8; $i++, $x--){
$digitoUm += $cpf[$i] * $x;
}
for($i = 0, $x = 11; $i <= 9; $i++, $x--){
if(str_repeat($i, 11) == $cpf){
return false;
}
$digitoDois += $cpf[$i] * $x;
}
$calculoUm = (($digitoUm%11) < 2) ? 0 : 11-($digitoUm%11);
$calculoDois = (($digitoDois%11) < 2) ? 0 : 11-($digitoDois%11);
if($calculoUm <> $cpf[9] || $calculoDois <> $cpf[10]){
return false;
}
return true;
}
?>
Código para utilizar a função, neste caso estou chamando a página PHP onde foi desenvolvida a função através do comando require.
<?php
require("validacao.php");
$cpf = '111.444.777-63';
if(isCpf($cpf)){
echo 'CPF valido';
}
else{
echo 'CPF invalido';
}
?>
require("validacao.php");
$cpf = '111.444.777-63';
if(isCpf($cpf)){
echo 'CPF valido';
}
else{
echo 'CPF invalido';
}
?>
Até a próxima oportunidade.