Como necessitei de criar um utilitário para a validação do numero de contribuinte, coloco aqui a função que criei em PHP para esse fim.
/**
* Função que valida se a estrutura do numero de contribuinte português é válida
*
* @todo validar se caracteres são todos digitos…
*
* Devolve os valores:
* – 0 se o numero é válido
* – 1 se o numero é inválido
* – 2 se o numero tem comprimento errado
*
*
*/
function calcularNif($string_nif){
if(strlen($string_nif)==9){
$nif_temp=str_split($string_nif);
$soma_controlo=0;
$digito_controlo_calculado=0;
for($indice=0;$indice<8;$indice++){
$soma_controlo+=$nif_temp[$indice]*($indice+2);
}
$calculo_parcial=intval($soma_controlo/11);
$calculo_parcial2=11*$calculo_parcial;
$digito_controlo_calculado=$soma_controlo-$calculo_parcial2;
if($digito_controlo_calculado==10)
$digito_controlo_calculado=0;
if($digito_controlo_calculado==$nif_temp[8])
return 0; //Devolve 0 se o numero é válido
else
return 1; //Devolve 1 se o numero é inválido
}
return 2; // Devolve 2 se numero com comprimento invalido
}
?>
Nota: Como é óbvio deverão usar o código à vossa responsabilidade e deverão validar a sua correcção.
Não terei nem aceito qualquer responsabilidade sobre o seu uso e eventuais prejuízos pela sua utilização.