40) { $dd = $dd - 40; $sesso = "F"; } else { $sesso = "M"; } if (is_numeric($yy)) { settype($yy, "integer"); if ($yy < 10) { $yy = 2000 + $yy; } else { $yy = 1900 + $yy; } if (getNumeroMese($mm) != "") { $dataNascita = $dd . "/" . getNumeroMese($mm) . "/" . $yy; } } } $comuneNascita = substr($cf, 11, 4); $provinciaNascita = $db->getSingleValue("SELECT Provincia FROM comuni WHERE CodCom = '" . $comuneNascita . "'"); } } function getNumeroMese($codice) { switch($codice) { case "A": $ritorno = 1; break; case "B": $ritorno = 2; break; case "C": $ritorno = 3; break; case "D": $ritorno = 4; break; case "E": $ritorno = 5; break; case "H": $ritorno = 6; break; case "L": $ritorno = 7; break; case "M": $ritorno = 8; break; case "P": $ritorno = 9; break; case "R": $ritorno = 10; break; case "S": $ritorno = 11; break; case "T": $ritorno = 12; break; } return $ritorno; } function getComuneNascita($db, $codiceComune) { return $db->getSingleValue("SELECT Comune FROM comuni WHERE CodCom = '" . strtoupper($codiceComune) . "'"); } function numeroConsonanti($nome) { $numeroConsonanti = 0; for ($i = 0; $i < strlen($nome); $i++) { if (isConsonante(substr($nome, $i, 1))) { $numeroConsonanti++; } } return $numeroConsonanti; } function isConsonante($car) { $car = strtoupper($car); if (!($car == "A" || $car == "E" || $car == "I" || $car == "O" || $car == "U")) { return true; } else { return false; } } function getConsonante($nome1, $numeroConsonante) { $consonanti = 0; for ($i = 0; $i < strlen($nome1); $i++) { if (ord(strtoupper(substr($nome1, $i, 1))) >= 65 && ord(strtoupper(substr($nome1, $i, 1))) <= 90) { if (isConsonante(substr($nome1, $i, 1))) { $consonanti++; if ($consonanti == $numeroConsonante) { return strtoupper(substr($nome1, $i, 1)); } } } } } function getVocale($nome1, $numeroVocale) { $vocali = 0; for ($i = 0; $i < strlen($nome1); $i++) { if (ord(strtoupper(substr($nome1, $i, 1))) >= 65 && ord(strtoupper(substr($nome1, $i, 1))) <= 90) { if (!isConsonante(substr($nome1, $i, 1))) { $vocali++; if ($vocali == $numeroVocale) { return strtoupper(substr($nome1, $i, 1)); } } } } } function getCodiceCognome($cognome) { switch (numeroConsonanti($cognome)) { case 0: $getCodiceCognome1 = substr($cognome, 0, 3); break; case 1: $getCodiceCognome1 = getConsonante($cognome, 1) . getVocale($cognome, 1) . getVocale($cognome, 2); break; case 2: $getCodiceCognome1 = getConsonante($cognome, 1) . getConsonante($cognome, 2) . getVocale($cognome, 1); break; default: $getCodiceCognome1 = getConsonante($cognome, 1) . getConsonante($cognome, 2) . getConsonante($cognome, 3); break; } if (strlen($getCodiceCognome1) < 3) { for ($i = strlen($getCodiceCognome1) - 1; $i < 3; $i++) { $getCodiceCognome1 = $getCodiceCognome1 . "X"; } } return $getCodiceCognome1; } function getCodiceNome($nome) { switch (numeroConsonanti($nome)) { case 0: $getCodiceNome1 = substr($nome, 0, 3); break; case 1: $getCodiceNome1 = getConsonante($nome, 1) . getVocale($nome, 1) . getVocale($nome, 2); break; case 2: $getCodiceNome1 = getConsonante($nome, 1) . getConsonante($nome, 2) . getVocale($nome, 1); break; case 3: $getCodiceNome1 = getConsonante($nome, 1) . getConsonante($nome, 2) . getConsonante($nome, 3); break; default: $getCodiceNome1 = getConsonante($nome, 1) . getConsonante($nome, 3) . getConsonante($nome, 4); break; } if (strlen($getCodiceNome1) < 3) { for ($i = strlen($getCodiceNome1) - 1; $i < 3; $i++) { $getCodiceNome1 = $getCodiceNome1 . "X"; } } return $getCodiceNome1; } function getCodiceAnno($anno) { if (strlen($anno) == 4) { return substr($anno, 2); } else { return ""; } } function getCodiceMese($mese) { $mesi = array(); $mesi[0] = "A"; $mesi[1] = "B"; $mesi[2] = "C"; $mesi[3] = "D"; $mesi[4] = "E"; $mesi[5] = "H"; $mesi[6] = "L"; $mesi[7] = "M"; $mesi[8] = "P"; $mesi[9] = "R"; $mesi[10] = "S"; $mesi[11] = "T"; return $mesi[$mese - 1]; } function getCodiceGiorno($giorno, $maschio) { if (!($maschio)) { return 40 + $giorno; } else { return str_pad($giorno, 2, "0", STR_PAD_LEFT); } } function getCheckSum($tempCode) { $result = 0; for ($i = 0; $i < 15; $i++) { $result = $result + getCharCode(substr($tempCode, $i, 1), false); $i++; } for ($i = 1; $i < 14; $i++) { $result = $result + getCharCode(substr($tempCode, $i, 1), true); $i++; } $result = $result % 26; return chr($result + 65); } function getCharCode($car, $pari) { $dispariC = array(); $dispariN = array(); $dispariC[0] = 1; $dispariC[1] = 0; $dispariC[2] = 5; $dispariC[3] = 7; $dispariC[4] = 9; $dispariC[5] = 13; $dispariC[6] = 15; $dispariC[7] = 17; $dispariC[8] = 19; $dispariC[9] = 21; $dispariC[10] = 2; $dispariC[11] = 4; $dispariC[12] = 18; $dispariC[13] = 20; $dispariC[14] = 11; $dispariC[15] = 3; $dispariC[16] = 6; $dispariC[17] = 8; $dispariC[18] = 12; $dispariC[19] = 14; $dispariC[20] = 16; $dispariC[21] = 10; $dispariC[22] = 22; $dispariC[23] = 25; $dispariC[24] = 24; $dispariC[25] = 23; $dispariN[0] = 1; $dispariN[1] = 0; $dispariN[2] = 5; $dispariN[3] = 7; $dispariN[4] = 9; $dispariN[5] = 13; $dispariN[6] = 15; $dispariN[7] = 17; $dispariN[8] = 19; $dispariN[9] = 21; if ($pari) { if (ord($car) >= 48 && ord($car) <= 57) { return ord($car) - 48; } else { return ord($car) - 65; } } else { if (ord($car) >= 48 && ord($car) <= 57) { return $dispariN[ord($car) - 48]; } else { return $dispariC[ord($car) - 65]; } } } function getCFError($cfError) { $errorMsg = ""; if ($cfError - 64 >= 0) { $errorMsg = "- Checksum non corrispondente
" . $errorMsg; $cfError = $cfError - 64; } if ($cfError - 32 >= 0) { $errorMsg = "- Comune di nascita non corrispondente
" . $errorMsg; $cfError = $cfError - 32; } if ($cfError - 16 >= 0) { $errorMsg = "- Anno (data di nascita) non corrispondente
" . $errorMsg; $cfError = $cfError - 16; } if ($cfError - 8 >= 0) { $errorMsg = "- Mese (data di nascita) non corrispondente
" . $errorMsg; $cfError = $cfError - 8; } if ($cfError - 4 >= 0) { $errorMsg = "- Giorno (data di nascita) non corrispondente
" . $errorMsg; $cfError = $cfError - 4; } if ($cfError - 2 >= 0) { $errorMsg = "- Nome non corrispondente
" . $errorMsg; $cfError = $cfError - 2; } if ($cfError - 1 >= 0) { $errorMsg = "- Cognome non corrispondente
" . $errorMsg; $cfError = $cfError - 1; } return $errorMsg; } function cleanString($stringToClean) { $ritorno = ""; for ($i = 0; $i < strlen($stringToClean); $i++) { $car = substr($stringToClean, $i, 1); if (ord(strtoupper($car)) >= 65 && ord(strtoupper($car)) <= 90) { $ritorno = $ritorno . $car; } } return $ritorno; } ?>