mejore un poco tu funcion para obtener el digito, por que hacia unos pasos demas le kambie un par de cosas y lo agregue a mi funcion por si te interesa :P
Código PHP:
function validaRun($rut){
if (preg_match ( '/^(\d{1,9})-((\d|k|K){1})$/',$rut,$d)){
$r=$d[1];for($o=$s=0;(int)$r;$r/=10)$o+=($r%10*(9-$s++%6));$o%=11;
return chr($o<10?$o+48:75)==strtoupper($d[2]);
}
}