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