Skip to content

Instantly share code, notes, and snippets.

@rbarrigav
Last active March 8, 2022 15:57
Show Gist options
  • 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;
}
@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