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"]

   
       
   
   
       

            Rut :
           
       

   

[/sourcecode]

lo puedes ver funcionando acá.

Ahora, como me gusta C# acá va el demo en Ejecutable Escritorio, y acá en Sitio Web. Pronto

El código en C# [Obtenido desde acá]

[sourcecode language="csharp"]
private string digitoVerificador(int rut)
{
	int Digito;
	int Contador;
	int Multiplo;
	int Acumulador;
	string RutDigito;
	Contador = 2;
	Acumulador = 0;
	while (rut != 0)
	{
		Multiplo = (rut % 10) * Contador;
		Acumulador = Acumulador + Multiplo;
		rut = rut / 10;
		Contador = Contador + 1;
		if ( Contador == 8 )
		{
			Contador = 2;
		}
	}
	Digito = 11 - (Acumulador % 11);
	RutDigito = Digito.ToString().Trim();
	if (Digito == 10)
	{
		RutDigito = "K";
	}
	if (Digito == 11)
	{
		RutDigito = "0";
	}
	return (RutDigito);
}
[/sourcecode]

Descargar acá en C# [escritorio, .Net FW 2.0]

Last modified: 10 Junio 2009

Author

Comments

Write a Reply or Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.