-
-
Save rbarrigav/3881019 to your computer and use it in GitHub Desktop.
<?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; | |
} |
Gracias estimado!
estimado una duda, el rut tengo que pasarlo con puntos y guion o solo los digitos???
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!
@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
Muchas gracias, funciona perfecto.
Muchas gracias master !
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)
Me sirvió de maravilla, muchas gracias cumpa!
muchas gracias!!.
Gracias por compartir!
Mil gracias 👍
Gracias (y)
Error en el código: prueben poniendo "asd" y les arrojará un True
pues tiene un bug, si colocar por ejemplo una variable $rut = 'Gdsdfgdfghfg';
te va a retornar true, lo cual es incorrecto