Algoritmo:
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;
}
- O NIF tem que ter 9 dígitos;
- O primeiro dígito tem que ser 1, 2, 5, 6, 8 ou 9;
- 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).
- 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.
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;
}
Validação de número de IVA automático:
ResponderEliminarhttp://vat-number-validation.eu/numero-de-iva/