Vadidar CIFs y NIFs en PHP

Buenas lechug@s mías!

En esta ocasión os voy a pasar un código PHP para que podais validar vuestro campo de CIF y NIF.

Este es el código php que recibiendo un campo $cif, puede identificar que sea un cif/nif válido. Hay que decir que hay cif que son el propio nif del usuario, ya que puede ser autónomo, por lo tanto si queremos validar el cif, tendrá que pasar los dos filtros. En caso de querer solo el nif, nos vale con quitar la parte del cif.

Aquí teneis el código:

//Esta es la variable que comprobará si pasa el filtro

$li_ret = 0;

// Elimina caracteres no válidos del campo $cif, que es el cif que queremos validar
$dato = ereg_replace(“[^[:alnum:]]”, “”, $cif);

// Averigua si es NIF o CIF (Si lleva la letra al principio, es CIF)
$variable_esCIF=(!is_numeric(substr($dato, 0, 1)));
$variable_esNIF=(!is_numeric(substr($dato, strlen($dato)-1, 1)));

if ($variable_esCIF || $variable_esNIF) {
// Separa los números y las letras
$ls_numero = ereg_replace(“[[:alpha:]]”, “”, $dato);
$ls_letra = ereg_replace(“[^[:alpha:]]”, “”, $dato);

if ($variable_esNIF) {
// Verifica que sea NIF

$valor= (int) ($ls_numero / 23);
$valor *= 23;
$valor= $ls_numero – $valor;
$letras= “TRWAGMYFPDXBNJZSQVHLCKEO”;
$letraNif= substr ($letras, $valor, 1);

($letraNif == strtoupper($ls_letra))?$li_ret=1:$li_ret=-1;
};

if ($variable_esCIF) {
// Verifica que sea CIF

$lb_ret=false;
if (strlen($ls_numero) == 8) {
$lb_ret=true;

$numOfDigits = 0 – strlen($ls_numero);

$i = -1;
while ($i>=$numOfDigits){
if (($i % 2) == 0){
$double = 2*(substr($ls_numero, $i, 1));
$total += substr($double,0,1);
if (strlen($double > 1)){
$total += substr($double,1,1);
}
} else {
$total += substr($ls_numero, $i, 1);
}
$i–;
}

if (($total % 10) != 0){
$lb_ret=false;
}
}

($lb_ret)?$li_ret=2:$li_ret=-2;
};
}
if($li_ret<=0){
echo “El cif introducido no es correcto”;
}else if($li_ret==1){
echo “El cif introducido es un NIF, pero no un CIF”;
}else if($li_ret==2){

echo “El cif introducido es un CIF”;

}

 

Ya sabeis, si teneis dudas preguntar en los comentarios.

Nos leemos!

Deja un comentario