Funcions

De Wiki personal d'en Guillem Serrat

Funció campBuit

La funció campBuit verifica que un camp tingui un valor introduit.

La funció rep dos paràmetres, el nom del camp que es vol comprovar i l’array on s’emmagatzema tots els errors que es mostren a l’usuari. Com volem que els valors de l'array es comparteixin entre la funció i el codi principal, fem un pas per referència.

// Validar si un camp està buit
function campBuit($nomCamp, &$errors) { // Esperem el camp i l'array de valors. Com volem que els valors de l'array es comparteixin, fem un pas per referència.
    if (empty($_POST[$nomCamp])) { // Si el camp indicat està buit
        $errors[] = "El camp $nomCamp és buit."; // Afegim a l'array d'errros el següent missatge  
        return true;
    }
    return false;
}

Funció validarDNI

La funció validarDNI verifica que el DNI introduït tingui un valor vàlid.

La funció rep un sol paràmetre, el qual és el DNI.

// Validar DNI
function validarDNI($dni): bool { // Espera un DNI d'entrada
    $dni = strtoupper(trim($dni)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
    if (preg_match('/^[0-9]{8}[A-Z]$/', $dni)) { // Comprova que hi ha 8 números seguit d'una lletra 
        $lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el DNI
        $num = substr($dni, 0, 8); // Extreu els primers 8 caràcters de $DNI (números)
        $lletra = substr($dni, -1); // Extreu l'últim caràcter del DNI (lletra)
        return $lletra === $lletres[$num % 23]; // 
    }
    return false;

    /* Expresió regular '/^[0-9]{8}[A-Z]$/'
    ^ = inici de la cadena
    [0-9]{8} → exactament 8 digits (del 0 al nou)
    [A-Z] = una lletra majúscula
    $ = fin de la cadena

    */
}

Funció validarNIE

La funció validarNIE verifica que el NIE introduït tingui un valor vàlid.

La funció rep un sol paràmetre, el NIE.

// Validar NIE
function validarNIE($nie): bool { // Espera un NIE d'entrada
    $nie = strtoupper(trim($nie)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)

    if (preg_match('/^[XYZ][0-9]{7}[A-Z]$/', $nie)) { // Comprova que el DNI tingui una lletra X,Y o Z + 7 números + una lletra 
        $lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el NIE
        $numeroInicial = str_replace(['X','Y','Z'], ['0','1','2'], $nie[0]); // Converteix cada lletra en un nombre: X = 0, Y = 1, Z = 2
        $numero = $numeroInicial . substr($nie, 1, 7); // Concatena el número de la primera lletra amb la resta del NIE
        $lletra = substr($nie, -1); // Agafa la lletra (la que queda, la del final)
        return $lletra === $lletres[$numero % 23];
    }
    return false;
}

Funció validarPassaport

La funció validarPassaport verifica que el passaport introduït tingui un valor vàlid.

La funció rep un sol paràmetre, el passaport.

// Validar Passaport
function validarPassaport($passaport): bool { // Espera un passaport
    $passaport = strtoupper(trim($passaport)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)

    if (preg_match('/^[A-Z]{3}[0-9]{6}[A-Z]$/', $passaport)) { // Ha d'haber-hi 3 lletres, seguit de 6 números i acabar amb una lletra
        return true;
    }

    return false;
}

Funció esMajorEdat

La funció esMajorEdat verifica que la data de naixement impliqui que l’usuari sigui major d’edat.

La funció rep un sol paràmetre, la data de naixement.

// Validar si és major d'edat
function esMajorEdat($dataNaix): bool { // Espera una data
    $dataNaix = new DateTime($dataNaix); // Creem un objecte DateTime a partir de la data oferta
    $avui = new DateTime(); // Creem un objecte DateTime a partir de la data d'avui
    return $avui->diff($dataNaix)->y >= 18; // Es calcula la diferencia entre les dues dates i es retornen tres valors: y = anys, m = messos i d = dies. Es fa la comparació amb el valor y (que son els anys de diferència)

    // Retorna true o false. Si l'operació es veritat (major o igual a 18), retorna true, si no, retorna false
}

Funció validarTelefon

La funció validarTelefon verifica que el telèfon tingui un valor vàlid

La funció rep un sol paràmetre, el número de telèfon.

// Validar telèfon
function validarTelefon($tel): bool {
    return preg_match('/^[0-9]{9}$/', $tel); // El telèfon ha de tenir 9 números
    // Si preg_match coincideix amb el patró, retorna true, si no, false
}

Funció codiPostalValid

La funció codiPostalValid verifica que el codi postal sigui vàlid.

La funció rep un sol paràmetre, el codi postal.

// Validar codi Postal
function codiPostalValid($codi_postal) {
    // El codi ha de ser exactament 5 dígits
    if (preg_match('/^[0-9]{5}$/', $codi_postal) == false) { // Si el codi postal no té 5 dígits
        return false;
    }

    // Valors possibles de codis postals a Espanya: 01000 - 52999
    $num = intval($codi_postal); // Converteix el codi postal (que és una string) a número per poder treballar amb intervals
    if ($num >= 01000 && $num <= 52999){ // Si el nombre està entre el 01000 i el 52999
        return true;
    } else { // Si el nombre no està en aquest interval
        return false;
    } 
}

Funció tractarCadena

La funció tractarCadena té l’objectiu de sustituir tots els caràcters especials (accents, dièresi, etc), treure tots els possibles espais (tant al principi, final o entremig) i convertir-ho tot a minúscules.

La funció rep un sol paràmetre, la cadena a tractar.

// Passar una cadena a minúscules sense espais i sense caràcters especials
function tractarCadena($cadena){
    $cadena = str_replace(
    ['á','à','ä','â','ã','Á','À','Â','Ä','Ã',
     'é','è','ë','ê','É','È','Ê','Ë',
     'í','ì','ï','î','Í','Ì','Ï','Î',
     'ó','ò','ö','ô','õ','Ó','Ò','Ö','Ô','Õ',
     'ú','ù','ü','û','Ú','Ù','Ü','Û',
     'ñ','Ñ'],
    ['a','a','a','a','a','A','A','A','A','A',
     'e','e','e','e','E','E','E','E',
     'i','i','i','i','I','I','I','I',
     'o','o','o','o','o','O','O','O','O','O',
     'u','u','u','u','U','U','U','U',
     'n','N'],
    $cadena

    );

    $cadena = str_replace(' ', '', strtolower(trim($cadena)));

    return $cadena;
}