Pages

Thursday, June 11, 2009

Validador de CPF em PHP

<?php

# \author allanjos[at]gmail.com

function cpf_is_valid($number) {
  if (strlen($number) != 11) {
    return false;
  }

  $number_dv = substr($number, 9, 11);

  $number = substr($number, 0, 9);

  $digito_verificador1 = 0;
  $digito_verificador2 = 0;
  $factor = 2;

  for ($i = strlen($number) - 1; $i > -1; $i--) {
    $digito_verificador1 += $number[$i] * $factor;

    ++$factor;
  }

  $digito_verificador1 = ($digito_verificador1 * 10) % 11;

  if ($digito_verificador1 == 10)
    $digito_verificador1 = 0;

  $factor = 2;

  $digito_verificador2 += $digito_verificador1 * $factor;

  for ($i = strlen($number) - 1; $i > -1; $i--) {
    ++$factor;

    $digito_verificador2 += $number[$i] * $factor;
  }

  $digito_verificador2 = ($digito_verificador2 * 10) % 11;

  if ($digito_verificador2 == 10)
    $digito_verificador2 = 0;

  if ($number_dv != $digito_verificador1.$digito_verificador2)
    return false;

  return true;
}

$number = '11122233396';

if (cpf_is_valid($number)) {
  print 'Válido.';
}
else {
  print 'Inválido.';
}

?>

No comments: