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.

Validar Rut por lotes

Publicado por Juan Pablo el 20.Sep.2004 | Comentarios (2)

Hace un par de semanas, un visitante de juque.cl me llamó a mi teléfono móvil, ¿el motivo?... ayuda "bomberil" con una validación de rut's, pero grandes cantidades de ellos. Manuel - creo que se identificó - me preguntaba si era posible hacer la misma validación utilizando MS-Excel ya que él quería consolidar una gran cantidad de información; mhhh pienso que es perfectamente posible pero dado que sufro de alergia por aplicaciones Microsoft ni siquiera lo intenté.

El viernes pasado (en casa de mis padres) - mientras el jugo de uva inundaba mi boca y una empanada caldúa se escurría por mi brazo izquierdo, recordé el problema de Manuel; así que comencé a tirar líneas en una servilleta. El resultado es un "dieciochero" script que valida el Rut pero por lotes, el cual se suma a la familia Validador de RUT en PHP y Validar Rut en Javascript . El "bicho" lee línea a línea un archivo llamado ruts.txt y arroja una página con el resultado de la validación, he habilitado un demo del mismo.

En el futuro es mucho más cómodo que me envíen un correo a un llamado telefónico, ahora si deseas escuchar mi impostada voz no te detengo.

Y el código dice más o menos así...:

<?php
/*
+++ validarutxlotes.php
d: Valida lote de rut, no importa si está con ,|.|-|k|K
a: Juan Pablo Aqueveque -> juque.cl
f: 2004-09-19 23:13:26 
- - - - - - - - - - - - - - - - - - - - - - - - - - */
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;
	}
}
/* Archivo con ruts
- - - - - - - - - - - - - */ 
$txt = "ruts.txt";
if ( !file_exists($txt) )
{
	echo 'el archivo ('.$txt.') no existe';
}
else
{
	echo '<ol>';
	$rut = @file("ruts.txt");
	for( $i=0 ; $i < count($rut) ; $i++ )
	{
		$rut[$i]=trim($rut[$i]);
		echo '<li>';
		echo valida_rut($rut[$i]) ? $rut[$i] : $rut[$i].' ERR';
		echo '</li>';
	}
	echo '</ol>';
}


?>

Enlace Permanente, Comentarios (2), Publicada en: PHP

Comentarios

1. octopvs
20.Oct.2004

hola, estoy haciendo un programilla en c para validar rut, pero no se como implementarlo, si tuvieses las ganas y el tiempo de explicarme el como se hace, seria muy bakan, algo me acuerdo que hay que multiplicar el primero por 2, el segundo digito por 3, y asi hasta 7... y ahi quedé, y otra cosa con el modulo 11 de la suma de los resultados. he intentado determinar como se hace en papel, pero y no doy mas de sueño, plis, ayudeme cumpa, si?, de antebrazo, mil gracias

2. juque
21.Oct.2004

octopvs, en mi primera entrada sobre el tema (Validar RUT en PHP) puedes ver la explicación del algoritmo.