Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Creazione codice fiscale

    Salve a tutti,

    vorrei sapere se qualcuno ha già creato o mi saprebbe dare un link, di uno script per la creazione in automatico del codice fiscale di una persona a partire dai suoi dati...

    Grazie a tutti

  2. #2
    ovviamente per il seguente script serve aver ricavato il codicedel paese.

    codice:
    <?php
    function cf($nome,$cognome,$giorno,$mese,$anno,$sesso,$codice_paese)
    {
    	$CF = array();
    	
    	// trasformo il nome ed il cognome tutto in maiuscolo
    	$nome = strtoupper($nome);
    	$cognome = strtoupper($cognome);
    	
    	// cerco le consonanti del cognome
    	preg_match_all('|[BCDFGHJKLMNPQRSTVWXYZ]|',$cognome,$con_cognome);
    	$con_cognome = $con_cognome[0];
    	
    	// cerco le vocali del cognome
    	preg_match_all('|[AEIOU]|',$cognome,$voc_cognome);
    	$voc_cognome = $voc_cognome[0];
    	
    	// cerco le consonanti del nome
    	preg_match_all('|[BCDFGHJKLMNPQRSTVWXYZ]|',$nome,$con_nome);
    	$con_nome = $con_nome[0];
    	
    	// cerco le vocali del nome
    	preg_match_all('|[AEIOU]|',$nome,$voc_nome);
    	$voc_nome = $voc_nome[0];
    	
    	// costruisco le tre lettere per il cognome
    	$nCons = count($con_cognome);
    	if ($nCons > 2)
    	{
    		$CF[0] = $con_cognome[0];
    		$CF[1] = $con_cognome[1];
    		$CF[2] = $con_cognome[2];
    	}
    	elseif ($nCons == 2)
    	{
    		$CF[0] = $con_cognome[0];
    		$CF[1] = $con_cognome[1];
    		$CF[2] = $voc_cognome[0];
    		
    	}
    	else
    	{
    		$CF[0] = $con_cognome[0];
    		$CF[1] = $voc_cognome[0];
    		$CF[2] = 'X';
    	}
    	
    	// costruisco le tre lettere per il nome
    	$nCons = count($con_nome);
    	if ($nCons > 3)
    	{
    		$CF[3] = $con_nome[0];
    		$CF[4] = $con_nome[2];
    		$CF[5] = $con_nome[3];
    	}
    	elseif ($nCons == 3)
    	{
    		$CF[3] = $con_nome[0];
    		$CF[4] = $con_nome[1];
    		$CF[5] = $con_nome[2];
    	}
    	elseif ($nCons == 2)
    	{
    		$CF[3] = $con_nome[0];
    		$CF[4] = $con_nome[1];
    		$CF[5] = $voc_nome[0];
    	}
    	else
    	{
    		$CF[3] = $con_nome[0];
    		$CF[4] = $voc_nome[0];
    		$CF[5] = 'X';
    	}
    	
    	// le due cifre per l'anno
    	// ATTENZIONE: l'anno deve essere di 4 cifrre
    	$anno = "$anno";
    	if (strlen($anno) == 2)
    	{
    		$CF[6] = $anno[0];
    		$CF[7] = $anno[1];
    	}
    	else
    	{
    		$CF[6] = $anno[2];
    		$CF[7] = $anno[3];
    	}
    	
    	// la lettera del mese
    	$mese_arr = array(1=>'A','B','C','D','E','H','L','M','P','R','S','T');
    	$CF[8] = $mese_arr[$mese];
    	
    	// le due lettere del giorno e del sesso
    	if ($sesso == 'F')
    	{
    		$giorno += 40;
    	}
    	$giorno = str_pad($giorno, 2, "0", STR_PAD_LEFT);
    	$CF[9]  = $giorno[0];
    	$CF[10] = $giorno[1];
    	
    	// 4 caratteri per il comune
    	
    	$CF[11] = $codice_paese[0];
    	$CF[12] = $codice_paese[1];
    	$CF[13] = $codice_paese[2];
    	$CF[14] = $codice_paese[3];
    	
    	
    	
    	
    	// calcolo la somma dei caratteri in posizione dispari
    	$somma = 0;
    	$dispari = array('0' => 1,'1' => 0,'2' => 5,'3' => 7,'4' => 9,'5' => 13,'6' => 15,'7' => 17,'8' => 19,'9' => 21,'A' => 1,'B' => 0,'C' => 5,'D' => 7,'E' => 9,'F' => 13,'G' => 15,'H' => 17,'I' => 19,'J' => 21,'K' => 2,'L' => 4,'M' => 18,'N' => 20,'O' => 11,'P' => 3,'Q' => 6,'R' => 8,'S' => 12,'T' => 14,'U' => 16,'V' => 10,'W' => 22,'X' => 25,'Y' => 24,'Z' => 23);
    	for ($i=0;$i<15;$i = $i+2)
    	{
    		$somma += $dispari["{$CF[$i]}"];
    	}
    	unset($dispari);
    	
    	// calcolo la somma dei caratteri in posizione pari
    	$pari = array('0' => 0,'1' => 1,'2' => 2,'3' => 3,'4' => 4,'5' => 5,'6' => 6,'7' => 7,'8' => 8,'9' => 9,'A' => 0,'B' => 1,'C' => 2,'D' => 3,'E' => 4,'F' => 5,'G' => 6,'H' => 7,'I' => 8,'J' => 9,'K' => 10,'L' => 11,'M' => 12,'N' => 13,'O' => 14,'P' => 15,'Q' => 16,'R' => 17,'S' => 18,'T' => 19,'U' => 20,'V' => 21,'W' => 22,'X' => 23,'Y' => 24,'Z' => 25);
    	for ($i=1;$i<15;$i = $i+2)
    	{
    		$somma += $pari["{$CF[$i]}"];
    	}
    	unset($pari);
    	
    	$resto = $somma % 26;
    	$controllo = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
    	$lettera_controllo = $controllo[$resto];
    	unset($controllo);
    	
    	$CF[15] = $lettera_controllo;
    	
    	return implode($CF);
    }
    ?>

  3. #3
    P.S.: ho scritto questo codice "secoli" fa. All'epoca funzionava ma sicuramente non è il massimo delle prestazioni e della pulizia.


  4. #4

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da Gianni_T
    ovviamente per il seguente script serve aver ricavato il codicedel paese.
    Cosa sarebbe il codice del paese? il CAP?

  6. #6
    Originariamente inviato da pugia
    Cosa sarebbe il codice del paese? il CAP?
    Se provi lo script che ti ho segnalato vedrai tutto, compresi tutti i comuni associati a prov. e codici in tre file .dat


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.