Despues de todo el royo de antes aqui te dejo un codigo pero no es en PHP pero es lo unico que he encontrado que te puede servir. Haz la conversion adecuada a PHP,ok??
Código HTML:
<html>
<head>
<title>Validar CIF</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<script language="javascript"> // Comprueba la entrada de datos function CompruebaDatos(elCIF)
{ var resul = false; // pasar a mayúsculas var temp = elCIF.value.toUpperCase();
if (!/^[A-Za-z0-9]{9}$/.test(temp)) // Son 9 dígitos?
alert ("Longitud incorrecta, un CIF consta de 9 dígitos");
else if (!/^[ABCDEFGHKLMNPQS]/.test(temp)) // Es una letra de las admitidas?
alert("El primer dígito es incorrecto, debe ser una letra de
las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S ");
else
resul = true;
return resul;
}
// La función recibe el CIF completo: A58818501
function ValidaCIF(F)
{
var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
var temp = 0;
for( i = 2; i <= 6; i += 2 )
{
temp = temp + v1[ parseInt(F.elCIF.value.substr(i-1,1))];
temp = temp + parseInt(F.elCIF.value.substr(i,1));
};
temp = temp + v1[ parseInt(F.elCIF.value.substr(7,1))];
temp = (10 - ( temp % 10));
if( temp == 10 )
alert( "El dígito de control es: J ó 0" );
else
alert( "El dígito de control es: "+temp );
return true;
}
</script>
<form name="Validar CIF" action="" method="post">
<p><font face="Arial, Helvetica, sans-serif" size="3">
<b>Validar CIF</b></font></p>
<p><font face="Arial, Helvetica, sans-serif" size="2">
Número de CIF ?
<input type="text" name="elCIF" onChange="CompruebaDatos(this)">
<input type="button" value="Validar" onClick="ValidaCIF(this.form)">
</font></p>
</form>
</body>
</html>