PHP Snippet
Validación de RUT en PHP con Algoritmo Módulo 11
Función optimizada en PHP 8.x para validar el formato y dígito verificador de RUTs en tiendas online WooCommerce, formularios de contacto y APIs en Laravel.
RutValidator.php
<?php
class RutValidator {
/**
* Valida un RUT chileno.
* @param string $rut
* @return bool
*/
public static function validate(string $rut): bool {
// Eliminar caracteres especiales
$cleaned = strtoupper(preg_replace('/[^0-9kK]/', '', $rut));
if (strlen($cleaned) < 2) {
return false;
}
$body = substr($cleaned, 0, -1);
$dv = substr($cleaned, -1);
if (!ctype_digit($body)) {
return false;
}
// Algoritmo Módulo 11
$sum = 0;
$multiplier = 2;
for ($i = strlen($body) - 1; $i >= 0; $i--) {
$sum += intval($body[$i]) * $multiplier;
$multiplier = ($multiplier === 7) ? 2 : $multiplier + 1;
}
$remainder = $sum % 11;
$expectedDv = 11 - $remainder;
if ($expectedDv === 11) {
$calculatedDv = '0';
} elseif ($expectedDv === 10) {
$calculatedDv = 'K';
} else {
$calculatedDv = (string)$expectedDv;
}
return $dv === $calculatedDv;
}
}
// Ejemplo de uso:
var_dump(RutValidator::validate('10.000.013-K')); // bool(true)
var_dump(RutValidator::validate('12345678-5')); // bool(true)
var_dump(RutValidator::validate('10.000.013-0')); // bool(false)
Publicidad
Espacio Publicitario AdSense (728x90)