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
}