Pues si te sirve de algo aquí tienes otra para validar CIFs:
Código PHP:
//FUNCION PARA ASEGURAR LA VALIDEZ DE UN CIF DADO
function depuracif ($cif) {
$soc=strtoupper(substr ($cif,0,1));
$arraysoc=array ("A","B","C","D","E","F","G","H","K","L","M","N","P","Q","S");
if (!in_array ($soc,$arraysoc)) {
return false;
} else {
$numero=substr ($cif,1,-1);
if ($numero==0) {
return false;
} else {
$control=substr ($cif,-1);
for ($i=0;$i<strlen($numero);$i++) {
$array[$i]=substr ($numero,$i,1);
}
$par=0;
for ($i=1;$i<=5;$i=$i+2) {
$par=$par+$array[$i];
}
$impar=0;
for ($i=0;$i<=6;$i=$i+2) {
$sub=0;
$sub=$array[$i]*2;
if ($sub>10) $sub=$sub-9;
$impar=$impar+$sub;
}
$sum=$par+$impar;
while ($sum>10) $sum=$sum-10;
$cont=10-$sum;
$letra[1]="A";
$letra[2]="B";
$letra[3]="C";
$letra[4]="D";
$letra[5]="E";
$letra[6]="F";
$letra[7]="G";
$letra[8]="H";
$letra[9]="I";
$letra[0]="J";
if ($control==$cont || strcmp (strtoupper($control),$letra[$cont])==0) {
return true;
} else {
return false;
}
}
}
}//end function