sexta-feira, 1 de março de 2013

Validação do NIF com PHP

Algoritmo:
  1. O NIF tem que ter 9 dígitos;
  2. O primeiro dígito tem que ser 1, 2, 5, 6, 8 ou 9;
  3. A soma de controle é dada por: 9 x d1 + 8 x d2 + 7 x d3 + 6 x d4 + 5 x d5 + 4 x d6 + 3 x d7 + 2 x d8 + (1 x) d9 a soma das multiplicações (10 - i) x di (com i de 1 a 9) tem que ser múltipla de 11 (congruente com o módulo 11, isto é, dê resto 0 quando dividida por 11). d1 é o dígito mais à esquerda, e d9 o digito mais à direita (digito de controle).
  4. d9, em alguns casos, precisava de ter o valor 10, para que a soma de controle fosse divisível por 11. Neste caso d9 tomará o valor 0.
Código:

function validateNif($nif){

    if(!is_numeric($nif) || strlen($nif) != 9) return false;
   
    $nifArray = str_split($nif);
   
    if($nifArray[0] != 1 && $nifArray[0] != 2 &&  $nifArray[0] != 5 && $nifArray[0] != 6 && $nifArray[0] != 8 && $nifArray[0] != 9)
        return false;
   
    $checkbit = $nifArray[0] * 9;
   
    for($i=2; $i <=8; $i++){
        $checkbit += $nif[$i-1] * (10 - $i);
    }
   
    $checkbit = 11 - ($checkbit % 11);
   
    if($checkbit >= 10) $checkbit=0;
   
    if($nif[8] == $checkbit) return true;
   
    echo "Invalid NIF";
    return false;
}

1 comentário:

  1. Validação de número de IVA automático:
    http://vat-number-validation.eu/numero-de-iva/

    ResponderEliminar