//
// Verifica que el NIF o CIF entregado es v谩lido
// (C)2004 Juan Prada www.silueth.com
//
// string $as_dato NIF o CIF a verificar
//
// Retorno 1 Era un NIF, y es correcto
// 2 Era un CIF, y es correcto
// -1 Era un NIF, y es incorrecto
// -2 Era un CIF, y es incorrecto
// 0 No se puede determinar si es NIF o CIF, y es incorrecto
function f_nifcif_verifica($as_dato) {
$li_ret = 0;
// Elimina caracteres no v谩lidos
$as_dato = ereg_replace("[^[:alnum:]]", "", $as_dato);
// Averigua si es NIF o CIF (Si lleva la letra al principio, es CIF)
$lb_esCIF=(!is_numeric(substr($as_dato, 0, 1)));
$lb_esNIF=(!is_numeric(substr($as_dato, strlen($as_dato)-1, 1)));
if ($lb_esCIF || $lb_esNIF) {
// Separa los n煤meros y las letras
$ls_numero = ereg_replace("[[:alpha:]]", "", $as_dato);
$ls_letra = ereg_replace("[^[:alpha:]]", "", $as_dato);
//echo "as_dato=$as_dato; ls_numero=$ls_numero; ls_letra=$ls_letra; lb_esNIF=".f_bool($lb_esNIF)."; lb_esCIF=".f_bool($lb_esCIF).'<br>';
if ($lb_esNIF) {
// Verifica que sea NIF
(f_LetraNIF($ls_numero) == $ls_letra)?$li_ret=1:$li_ret=-1;
};
if ($lb_esCIF) {
// Verifica que sea CIF
f_ValidarCIF($ls_numero)?$li_ret=2:$li_ret=-2;
};
}
return $li_ret;
}
//
// Calcula la letra de un NIF
// (C)2004 Juan Prada www.silueth.com
//
// string $dni N煤meros que conforman el DNI o CIF (SIN LETRA)
//
// Retorno string La letra correspondiente
//
function f_LetraNIF ($dni) {
$valor= (int) ($dni / 23);
$valor *= 23;
$valor= $dni - $valor;
$letras= "TRWAGMYFPDXBNJZSQVHLCKEO";
$letraNif= substr ($letras, $valor, 1);
return $letraNif;
}
//
// Valida el n煤mero CIF
// (C)2004 Juan Prada www.silueth.com
//
// string $ccNumber (El CIF (Sin letra) a verificar)
//
// Retorno boolean true Es correcto
// false No vale
//
function f_ValidarCIF($ccNumber) {
$lb_ret=false;
if (strlen($ccNumber) == 8) {
$lb_ret=true;
$numOfDigits = 0 - strlen($ccNumber);
$i = -1;
while ($i>=$numOfDigits){
if (($i % 2) == 0){
$double = 2*(substr($ccNumber, $i, 1));
$total += substr($double,0,1);
if (strlen($double > 1)){
$total += substr($double,1,1);
}
} else {
$total += substr($ccNumber, $i, 1);
}
$i--;
}
if (($total % 10) != 0){
$lb_ret=false;
}
}
return $lb_ret;
}
Autodecci贸n y validaci贸n de NIF y CIF
Tres funciones que posiblitan la validaci贸n de una cadena para valores de CIF o NIF. La principal, f_nifcif_verifica($as_dato), detecta si es NIF o CIF, y devuelve los valores oportunos para no solo saber qu茅 tipo de documento era, sino tambien para validar si est谩 correctamente definido.
Descargar adjuntos
COMPARTE ESTE TUTORIAL
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP