Publicado por Juan Pablo el 16.Jun.2004 | Comentarios (18)
Todos los chilenos o residentes permanente de esta larga y angosta faja de tierra poseemos un número identificatorio único e irrepetible, el llamado Rol Único Tributario o RUT, la entidad estatal responsable de la generación, mantención y actualización del dichoso RUT es el Servicio de Impuestos Internos (SII).
Ahora bien, para asegurar la correcta manipulación del RUT (ya sea verbal o visual) se le añade o agrega un dígito verificador (DV) al final del mismo. ¿Cómo se obtiene el DV?, aplicando una formula aritmética llamada Módulo 11 al RUT. Existen otras alternativas para obtener el DV pero en Chile se usa el Módulo 11.
Así entonces, para verificar que un rut es correcto se debe aplicar el algoritmo del módulo 11 al número (lo que va antes del guión). Por lo tanto, si el resultado de la operación anterior coincide con el Dígito Verificador (DV) el rut es válido.
¿Se entendió?, no importa con el ejemplo se entenderá, eso espero. Antes de ir al ejemplo debo decir que el DV tiene tres (3) reglas fundamentales.
El Dígito Verificador es:
Ahora lo haremos un poco más rápido: Comprobar si es correcto el RUT: 4 299 006-K.
Bueno, hecho todo este latoso pero necesario preámbulo presento mi script PHP que valida el RUT
<?php // valida_rut($r) v0.001 // No importa si el RUT esta con punto (.), comas (,), // guion (-),k (minuscula | mayuscula) da igual. // ---------------------------------------------------- // Autor: Juan Pablo Aqueveque <jp [arroba] juque [punto] cl > // 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 function valida_rut($r) { $r=strtoupper(ereg_replace('\.|,|-','',$r)); $sub_rut=substr($r,0,strlen($r)-1); $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'; } if ( $dv==$sub_dv ) { return true; } else { return false; } } //llamada de la funcion if ( valida_rut($_GET['rut']) ) { echo 'el rut es CORRECTO :-)'; } else { echo 'el rut es incorrecto :-('; } ?>
Enlace Permanente, Comentarios (18), Publicada en: PHP
Muy util tu dato, sirve mucho para verificar si los datos ingrsados son correctos, pero seria util si pusiera la version en C del codigo por favor. Por todo muchas gracias.
F@MP.
esta super bueno el codigo, muchas gracias.
Gracias por tu publicación, encontré lo que buscaba, la fómula para verificar un RUT
Hola!
disculpa la patudez, de verdad, pero, no sabes hacer eso en C# para asp.net??
vale!!
Pepe, lemento decirte que tengo alergia a aplicaciones Microsoft. ¿Ya le preguntaste a Google?
como hago para usar la formula en excell amigo.- ayuda por favor
Hola JP!! Tu código me sirvió mucho. Felicitaciones por tu página, está topísima. Buena suerte!!!
Hola.. da gusto leer páginas como la tuya.. deberías ser opinologo o escribir algún libro sobre informática para principiantes... leer tu ejercicio del módulo 11 me hace recuperar la fe en la humanidad y la informática tradicional (aunque igual por tiempo practiqué el viejo copy paste de tu código) Suerte y gracias!
MUY BUENO TU TRABAJO DE INFORMACION AUNQUE LO SUPE HACE 3 AÑOS ATRAS, PERO LO OLVIDE.
Gracias por tu codigo, tenia uno pero se extravio. Grande Temuco, yo tambien soy de Temuco, estoy realizando un sistema en PHP, de control de gastos que cuando lo tenga mas o menos terminado lo liberare. Escribeme si te interesa participar o hacer criticas.
Me sumo a todos los colegas que han expresado su gratitud, Te pasaste con el código !!!
hola el codigo esta muy bueno pero seguramente mi rut esta danyado porque le puse el mio 15350265-k y me tiro que mi digito verificador deberia ser UNO. cuac ! saludos de todos mdos... tal vez por ahi por el x=2 me huele el error... lo anoto si lo descubro.
Gran Aporte Viejo.. Me sacaste de un gran dilema
Super bueno, pero mas que el código que hiciste en PHP la explicación operación matematica para el calculo, la llamada modulo 11, ya que sabiendo esta operación uno la puede adaptar al lenguaje que quiera, los que te piden que se las des en otro lenguaje son flojos, lo importante es saber la formula lo otro depende de cada uno
Muy buen aporte
necesito saber mi run