Skip to content

Instantly share code, notes, and snippets.

@rbarrigav
Last active March 8, 2022 15:57
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save rbarrigav/3881019 to your computer and use it in GitHub Desktop.
Save rbarrigav/3881019 to your computer and use it in GitHub Desktop.
Validar Rut en php
<?php
/**
* Comprueba si el rut ingresado es valido
*
* @param $rut string
* @return true o false
*/
function valida_rut($rut)
{
$rut = preg_replace('/[^k0-9]/i', '', $rut);
$dv = substr($rut, -1);
$numero = substr($rut, 0, strlen($rut)-1);
$i = 2;
$suma = 0;
foreach(array_reverse(str_split($numero)) as $v)
{
if($i==8)
$i = 2;
$suma += $v * $i;
++$i;
}
$dvr = 11 - ($suma % 11);
if($dvr == 11)
$dvr = 0;
if($dvr == 10)
$dvr = 'K';
if($dvr == strtoupper($dv))
return true;
else
return false;
}
@nicolasparada
Copy link

Gracias, mister. Me copio el código para un trabajo ;)

@gatopadre
Copy link

Muchas gracias estimado, clarito y ordenado.

@coyarzun2013
Copy link

pues tiene un bug, si colocar por ejemplo una variable $rut = 'Gdsdfgdfghfg';

te va a retornar true, lo cual es incorrecto

@punchi
Copy link

punchi commented May 16, 2016

@frannylac
Copy link

Gracias estimado!

@ceaparedes
Copy link

estimado una duda, el rut tengo que pasarlo con puntos y guion o solo los digitos???

@Azahly
Copy link

Azahly commented Aug 13, 2018

Necesito validar rut en mi pega y la pagina del regitro civil siempre se cae. Se que mi pregunta s muy noob pero
dónde puedo ejecutar este código?
Tengo el desktop de github pero no lo se usar.
Gracias!

@MarioCares
Copy link

@Azahly el código está escrito en PHP, por lo tanto tendrías que montar un servidor.
No tiene nada que ver la aplicación desktop de github.
Si quieres algo simple, ocupa el script que hicieron aquí => https://gist.github.com/rotvulpix/69a24cc199a4253d058c

@filipecrocks
Copy link

Muchas gracias, funciona perfecto.

@DvdQzd
Copy link

DvdQzd commented Aug 24, 2018

Muchas gracias master !

@regCode
Copy link

regCode commented Oct 10, 2018

El código anterior tiene un pequeño error que se produce cuando los dígitos verificadores que se comparan son el "0" y la letra "K". Esto se debe a que el operador igual (==) retorna TRUE al comparar el integer 0 con cualquier string que no pueda ser calzado por la conversión implícita de tipos (http://php.net/manual/en/types.comparisons.php). Mi recomendación es hacer un cast a $dvr antes de comparar. return (string)$dvr == strtoupper($dv)

@sagenev
Copy link

sagenev commented Jan 15, 2020

Me sirvió de maravilla, muchas gracias cumpa!

@Lucianox1
Copy link

muchas gracias!!.

@pzjink
Copy link

pzjink commented Sep 15, 2020

Gracias por compartir!

@felcadev
Copy link

Mil gracias 👍

@yellowspider104
Copy link

Gracias (y)

@quenox
Copy link

quenox commented Mar 26, 2021

Error en el código: prueben poniendo "asd" y les arrojará un True

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment