Estás mirando la versión 3 de mi sitio web, para ver la última versión por favor anda a juque.cl

juque

Juan Pablo Aqueveque: Ingeniero de Sistemas, Diseñador y Desarrollador Web que reside en Temuco, Chile.

Validador de RUT en PHP

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:

Ejemplo de aplicación del Módulo 11

  1. Dado el RUT 12 345 678-5. Llamaremos Número a 12 345 678 y Digito Verificador (DV) a 5
  2. Tomaremos la serie numérica: 2, 3, 4, 5, 6, 7.
  3. Se multiplicará cada dígito del Número por su correspondiente en la serie numérica, la multiplicación la hacemos de derecha a izquierda, si el Número es más largo que la serie se vuelve a comenzar en 2.
  4. Multiplicando
    • 8 x 2 = 16
    • 7 x 3 = 21
    • 6 x 4 = 24
    • 5 x 5 = 25
    • 4 x 6 = 24
    • 3 x 7 = 21
    • 2 x 2 = 4
    • 1 x 3 = 3
  5. La suma de cada multiplicación es: 16+21+24+25+24+21+4+3 = 138
  6. El siguiente paso es dividir este resultado en 11 (por esto se llaman módulo 11). Sólo se toma en cuenta el cuociente entero.
  7. 138 / 11 = 12 el resto es 6. ¿Dudas?, comprobemos la división (11 x 12) + 6 = 132 + 6 = 138, ¡perfecto!.
  8. Ahora sólo nos queda restar el resto (6) a 11, lo cual es: 11 - 6 = 5
  9. El resultado es 5
  10. La primera regla del módulo 11 dice que es el mismo número si éste está en el rango 1-9 entonces el Digito Verificador del Número: 12 345 678 es 5, en consecuencia el RUT dado al inicio del ejemplo es CORRECTO.

Segundo Ejemplo

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

Script PHP que valida un 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

Comentarios

1. Felipe
22.Oct.2004

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.

2. jp
22.Oct.2004

PHP es similar a C (son parientes), adáptalo.

3. Cristian aliaga
24.Oct.2004

esta super bueno el codigo, muchas gracias.

4. Andrés Raggio R.
28.Oct.2004

Gracias por tu publicación, encontré lo que buscaba, la fómula para verificar un RUT

5. Pepe
31.Oct.2004

Hola!

disculpa la patudez, de verdad, pero, no sabes hacer eso en C# para asp.net??

vale!!

6. juque
2.Nov.2004

Pepe, lemento decirte que tengo alergia a aplicaciones Microsoft. ¿Ya le preguntaste a Google?

7. OK
10.Nov.2004

estuvo salvador, me daba un pax hacerlo, gracias

8. louis
16.Nov.2004

como hago para usar la formula en excell amigo.- ayuda por favor

9. Paula
23.Nov.2004

Hola JP!! Tu código me sirvió mucho. Felicitaciones por tu página, está topísima. Buena suerte!!!

10. walro
18.Dic.2004

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!

11. JOSE LUIS AVENDAÑO JORQUERA
3.Ene.2005

MUY BUENO TU TRABAJO DE INFORMACION AUNQUE LO SUPE HACE 3 AÑOS ATRAS, PERO LO OLVIDE.

12. Patricio Gonzalez
13.Ene.2005

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.

13. Christian Rios
27.Ene.2005

Me sumo a todos los colegas que han expresado su gratitud, Te pasaste con el código !!!

14. miguel rojas
29.Ene.2005

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.

15. Mario Morales
25.Feb.2005

Gran Aporte Viejo.. Me sacaste de un gran dilema

16. Alejandro Reyes
18.Mar.2005

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

17. Cristian Riffo Huez
12.Abr.2005

Muy buen aporte

18. carolaine de los angeles acuña pavez
17.Feb.2007

necesito saber mi run