Skip to content
Todo se AprendeAyuda y trucos para programación
  • Home
  • Categorías
    • Debian
    • JS
    • PHP
    • WordPress
    • MySql
    • Cordova

Validar DNI (NIF), CIF, NIE

24/08/2020 0 comments Article PHP

Os paso una función para validar DNI CIF NIE

/**
 * Validar DNI (NIF), CIF, NIE
 *
 * @param string $dni Numero de identificación
 *
 * @return bool Si es ok(true) o no(false)
 */
function validDniCifNie($dni){
  $cif = strtoupper($dni);
  for ($i = 0; $i < 9; $i ++){
    $num[$i] = substr($cif, $i, 1);
  }
  // Si no tiene un formato valido devuelve error
  if (!preg_match('/((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)/', $cif)){
    return false;
  }
  // Comprobacion de NIFs estandar
  if (preg_match('/(^[0-9]{8}[A-Z]{1}$)/', $cif)){
    if ($num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($cif, 0, 8) % 23, 1)){
      return true;
    }else{
      return false;
    }
  }
  // Algoritmo para comprobacion de codigos tipo CIF
  $suma = $num[2] + $num[4] + $num[6];
  for ($i = 1; $i < 8; $i += 2){
    $suma += (int)substr((2 * $num[$i]),0,1) + (int)substr((2 * $num[$i]), 1, 1);
  }
  $n = 10 - substr($suma, strlen($suma) - 1, 1);
  // Comprobacion de NIFs especiales (se calculan como CIFs o como NIFs)
  if (preg_match('/^[KLM]{1}/', $cif)){
    if ($num[8] == chr(64 + $n) || $num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($cif, 1, 8) % 23, 1)){
      return true;
    }else{
      return false;
    }
  }
  // Comprobacion de CIFs
  if (preg_match('/^[ABCDEFGHJNPQRSUVW]{1}/', $cif)){
    if ($num[8] == chr(64 + $n) || $num[8] == substr($n, strlen($n) - 1, 1)){
      return true;
    }else{
      return false;
    }
  }
  // Comprobacion de NIEs
  // T
  if (preg_match('/^[T]{1}/', $cif)){
    if ($num[8] == preg_match('/^[T]{1}[A-Z0-9]{8}$/', $cif)){
      return true;
    }else{
      return false;
    }
  }
  // XYZ
  if (preg_match('/^[XYZ]{1}/', $cif)){
    if ($num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr(str_replace(array('X','Y','Z'), array('0','1','2'), $cif), 0, 8) % 23, 1)){
      return true;
    }else{
      return false;
    }
  }
  // Si todavía no se ha verificado devuelve error
  return false;
}

5 3 votes
Article Rating
Tags: cif, comprobar dni, dni, nie, nif, validar, validar cif dni nie
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments

Entradas recientes

  • Bash mysql dump database
  • Minificar CSS y Javascript con PHP
  • Tabla SQL población España
  • Validar DNI (NIF), CIF, NIE
  • Table tr collapsible Jquery

Categorías

  • Cordova
  • Debian
  • JS
  • MySql
  • PHP
  • Sin categoría
  • WordPress

Archivos

Copyright Todo se Aprende 2022 | Theme by ThemeinProgress | Proudly powered by WordPress

wpDiscuz
Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo.Estoy de acuerdoLeer más