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;
}
?>