Hace un tiempo en clases nos pidieron cómo validar un rut, y todos fueron a la página de juque a ver cómo se hacía. Ahroa “le traémos lo contrario” cómo obtener el dígito verificador de un Rut [para usar en sitios como averigualo.cl]. Aclaro que el código está modificado en base a lo programado por Juque.
El código en PHP:
[sourcecode language="php"] // Script completamente gratis, eso si! mándame un email si lo ocupas // o si encuentras algún problema :] // Temuco, 31 octubre 2002 11:48:00 // // Mod: Brede Basualdo Serraíno// Concepción, 10 junio 2009 12:01:00 function valida_rut($r) { $r=strtoupper(ereg_replace('\.|,|-','',$r)); $sub_rut=substr($r,0,strlen($r)); $sub_dv=substr($r,-1); $x=2; $s=0; for ( $i=strlen($sub_rut)-1;$i>=0;$i-- ) { if ( $x >7 ) { $x=2; } $s += $sub_rut[$i]*$x; $x++; } $dv=11-($s%11); if ( $dv==10 ) { $dv='K'; } if ( $dv==11 ) { $dv='0'; } return $dv; } echo valida_rut($_GET['rut']); ?> [/sourcecode]
Esto lo pueden probar acá.
El código en Javascript, gracias al Juque, modificado por mí.
[sourcecode language="javascript"] // // Validador de Rut // Descargado desde http://www.juque.cl/ // Modificado por http://bredebs.net // function revisarDigito( crut ) { var rutfinal=""; largo = crut.length; if ( largo > 2 ) rut = crut; else rut = crut.charAt(0); if ( rut == null) return 0 var dvr = '0' suma = 0 mul = 2 for (i= rut.length -1 ; i >= 0; i--) { suma = suma + rut.charAt(i) * mul if (mul == 7) mul = 2 else mul++ } res = suma % 11 if (res==1) dvr = 'k' else if (res==0) dvr = '0' else { dvi = 11-res dvr = dvi + "" } rutfinal = crut+"-"+dvr; alert("EL rut correcto es: "+rutfinal); return rutfinal; } function Rut(t) { window.document.form1.rut.value = revisarDigito(t).toUpperCase(); return false; } [/sourcecode]
claro que para eso necesitan este HTML [del juque :P]
[sourcecode language="html"]