HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/dtw.bradford/app/Rules/ValidRut.php
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class ValidRut implements Rule
{

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        // Limpiar el RUT, eliminando cualquier caracter no numérico o la letra K
        $r = strtoupper(preg_replace('/[^Kk0-9]/i', '', $value));

        // Validar si el RUT es una secuencia repetida o si tiene menos de 7 caracteres
        if ($r == '111111111' || $r == '222222222' || $r == '333333333' || 
            $r == '444444444' || $r == '555555555' || $r == '666666666' || 
            $r == '777777777' || $r == '888888888' || $r == '999999999' ||
            strlen($r) < 7) {
            return false;
        }

        // Separar el cuerpo del RUT y el dígito verificador
        $sub_rut = substr($r, 0, strlen($r) - 1);
        $sub_dv = substr($r, -1);

        // Calcular el dígito verificador
        $x = 2;
        $s = 0;
        for ($i = strlen($sub_rut) - 1; $i >= 0; $i--) {
            if ($x > 7) {
                $x = 2;
            }
            $s += $sub_rut[$i] * $x;
            $x++;
        }

        // Obtener el dígito verificador esperado
        $dv = 11 - ($s % 11);
        if ($dv == 10) {
            $dv = 'K';
        } elseif ($dv == 11) {
            $dv = '0';
        }

        // Comparar el dígito verificador calculado con el ingresado
        return $dv == $sub_dv;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'El RUT no es válido.';
    }
}