Simples… a função abaixo resolve!
Envie o CPF para ela e ela irá retornar true ou false.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
function is_cpf($val) {
$cpf = str_replace('-', '', str_replace('.', '', $val));
if (!is_numeric($cpf)) {
$status = false;
}
else {
if (($cpf == '11111111111') || ($cpf == '22222222222') || ($cpf == '33333333333') || ($cpf == '44444444444') || ($cpf == '55555555555') || ($cpf == '66666666666') || ($cpf == '77777777777') || ($cpf == '88888888888') || ($cpf == '99999999999') || ($cpf == '00000000000')) {
$status = false;
}
else {
$dv_informado = substr($cpf, 9, 2);
for ($i = 0; $i <= 8; $i++) {
$digito[$i] = substr($cpf, $i, 1);
}
$posicao = 10;
$soma = 0;
for ($i = 0; $i <= 8; $i++) {
$soma = $soma + $digito[$i] * $posicao;
$posicao = $posicao - 1;
}
$digito[9] = $soma % 11;
if ($digito[9] < 2) {
$digito[9] = 0;
}
else {
$digito[9] = 11 - $digito[9];
}
$posicao = 11;
$soma = 0;
for ($i = 0; $i <= 9; $i++) {
$soma = $soma + $digito[$i] * $posicao;
$posicao = $posicao - 1;
}
$digito[10] = $soma % 11;
if ($digito[10] < 2) {
$digito[10] = 0;
}
else {
$digito[10] = 11 - $digito[10];
}
$dv = $digito[9] * 10 + $digito[10];
if ($dv != $dv_informado) {
$status = false;
}
else $status = true;
}
}
return $status;
} |