Estuve intentando hacer una función que lo hiciera. Salvo algo que se me haya pasado, funciona . Esta es la funcion:
function CIF ($cif)
{
/************************************/
/* Si es correcto, devuelve un 1 */
/************************************/
//primero sumo los digitos de las posiciones pares
$A = $cif[2] + $cif[4] + $cif[6];
//Para cada uno de los dígitos de la posiciones impares, multiplicarlo por 2 y sumar los dígitos del resultado.
$i_1 = $cif[1]*2;
$i_3 = $cif[3]*2;
$i_5 = $cif[5]*2;
$i_7 = $cif[7]*2;
//Lo paso a cadena para poder sumar sus digitos
$i__1 = "".$i_1;
$i__3 = "".$i_3;
$i__5 = "".$i_5;
$i__7 = "".$i_7;
$i___1 = $i__1[0] + $i__1[1];
$i___3 = $i__3[0] + $i__3[1];
$i___5 = $i__5[0] + $i__5[1];
$i___7 = $i__7[0] + $i__7[1];
$B = $i___1 + $i___3 + $i___5 + $i___7;
$C = $A + $B;
$C = "".$C;
//esta resta ha de salir 1 para que el CIF sea válido
$D = 10 - $C[1];
return $D;
}
Ni que decir tiene que si alguno teneis una función mejor, bienvenida sea. Y si ésta está mal y alguien se da cuenta, pues ya sabe jeje. Es la primera vez que escribo en el foro pero lo sigo desde hace tiempo ya que para mi es una ayuda inestimable. Un saludo!