yo hice esto para el asunto del rut....
lo aplico de varias formas... ta las comento
Código PHP:
Class RUT {
var $rut;
var $dv;
var $valido;
function RUT ($rut, $dv = 'X'){
if(preg_match("/-/",$rut)){
$dv = substr($rut,strlen($rut)-1);
$rut = substr($rut,0,strlen($rut)-2);
}
$rut = strtoupper(preg_replace('{\.|,|-}','',$rut));
if($dv == 'X'){
$this->rut = substr($rut,0,strlen($rut)-1);
$dv = substr($rut,-1);
}else{
$this->rut = $rut;
}
$this->dv = $this->Valida($this->rut);
if($this->dv == $dv){
$this->valido = true;
}else{
$this->valido = false;
}
}
function Valida($r){
$s=1;
for($m=0;$r!=0;$r/=10){
$s=($s+$r%10*(9-$m++%6))%11;
}
return chr($s?$s+47:75);
}
} // END CLASS
y lo aplico
$RUT = RUT("xx.xxx.xxx-x");
$RUT = RUT("xx.xxx.xxx-x","x");
$RUT = RUT("xx.xxx.xxx","x");
puede ser con puntos o comas o nada.
por ejemplo
Código PHP:
$RUT = new RUT("xx.xxx.xxx-9");
if($RUT->Valido){
echo "si vale";
}else{
echo "no vale";
}
ahora lo que tu preguntas es precisamente la formula para retornar el digito verificador del rut
en esta pagina se esplica un poco como es el cuento, de forma detallada
http://www.dcc.uchile.cl/~mortega/mi...os/validarrut/