//
// 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