Como dice wmzt, la función cambia poco para ajustarse a la nueva normatica
Se sustituye
X->0 (como antes)
Y->1
Z->2
Código PHP:
function checkNIF(nif)
{
if (!nif) return false;
var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
if (nif.length != 9) return false;
else {
letra = nif.substr(8, 1); letra = letra.toUpperCase();
dni = nif.substr(0, 8);
dni = dni.toUpperCase(); dni = dni.replace('X','0'); dni = dni.replace('Y','1'); dni = dni.replace('Z','2');
dni -= parseInt(dni/23) * 23;
if (letras.charAt(dni) != letra) return false;
else return true;
}
}