E' abbastanza semplice da fare, ci vogliono letteralmente pochi secondi!

Basta che scrivi una funzione che prende come parametro il codice fiscale e restituisca true se l'operazione riesce e false se l'operazione non riesce.

Nello specifico il parametro della funzione lo devi chiamare $value (ad es. nell'attuale funzione ControlloCF su chiama $cf) e poi dove ci sono i commenti // Errore e // Tutto ok devi mettere, rispettivamente, il return false ed il return true, perché nel primo caso hai un errore mentre nel secondo l'operazione riesce

Mi sono scordato a postarti l'espressione regolare che faceva i controlli generali!

rimetto il codice qui
Codice PHP:
if (preg_match('/^([A-Z]{6})([0-9]{2})([A-Z])([0-9]{2})([A-Z])([0-9]{3})([A-Z])$/i'$value) > 0)
{
    
// Verifica se ha già inizializzato i valori corrispondenti ai caratteri 
    
if (isset($fiscalCodeCharacterValues) === false
    { 
        
// Inizializza l'array 
        
$fiscalCodeCharacterValues = 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); 
    } 

    
// Rende il valore passato tutto in maiuscolo 
    
$value strtoupper($value); 

    
// Inizializza il valore di controllo 
    
$checkValue 0

    
// Inizia il calcolo del valore di controllo sui numeri dispari 
    
for($index 1$index <= 13$index += 2
    { 
        
// Acquisisce il caratteri dispari 
        
$char ord($value[$index]); 
         
        
// Confronta il valore 
        
if (48 <= $char && $char <= 57
        { 
            
$checkValue += $char 48
        } 
        else 
        { 
            
$checkValue += $char 65
        } 
    } 

    
// Continua il calcolo del valore di controllo sui numeri pari 
    
for($index 0$index <= 14$index += 2
    { 
        
// Aggiunge i valore per il codice di controllo 
        
$checkValue += $fiscalCodeCharacterValues[$value[$index]]; 
    } 

    
// Esegue gli ultimi calcoli sul valore di controllo 
    
$checkValue = ($checkValue 26) + 65

    
// Confronta il valore 
    
if ($checkValue != ord($value[15])) 
    { 
        
// Errore 
    


    
// Tutto ok