Codice PHP:
/**
 * check_eu_vat()
 *
 * Formal European VAT validation.
 *
 * @param mixed $vat_number
 * @return boolean Success
 */
function check_eu_vat($vat_number)
{
    
// Checks if the vat number contains invalid characters.

    // Check for spaces
    
if(strpos($vat_number' ') !== false)
    {
        return 
false;
    }

    
// Check for lowercase letters
    
if(strcmp($vat_numberstrtoupper($vat_number)))
    {
        return 
false;
    }

    
// Check for invalid characters, and split the VAT number into country and
    // VAT ID
    
if(!ereg('([A-Z]{2})([0-9A-Z]*)'$vat_number$regs))
    {
        return 
false;
    }

    
$country_id $regs[1];
    
$vat_id $regs[2];

    
$n strlen($vat_id);
    switch(
$country_id)
    {
        case 
'BE'// België BE
            // http://ec.europa.eu/taxation_customs/vies/en/vieshome.htm
            // ALL Belgian VAT numbers will change from 9 to 10 digits as from
            // 31/12/2007
            
switch($n)
            {
                case 
9:
                case 
10:
                    return 
true;
            }
            return 
false;
        case 
'BG'// Bulgarije BG
            
switch($n)
            {
                case 
9:
                case 
10:
                    return 
true;
            }
            return 
false;
        case 
'CY'// Cyprus CY
            
switch($n)
            {
                case 
9:
                    return 
true;
            }
            return 
false;
        case 
'DK'// Denemarken DK
            
switch($n)
            {
                case 
8:
                    return 
true;
            }
            return 
false;
        case 
'DE'// Duitsland DE
            
switch($n)
            {
                case 
9:
                    return 
true;
            }
            return 
false;
        case 
'EE'// Estland EE
            
switch($n)
            {
                case 
9:
                    return 
true;
            }
            return 
false;
        case 
'FI'// Finland FI
            
switch($n)
            {
                case 
8:
                    return 
true;
            }
            return 
false;
        case 
'FR'// Frankrijk FR
            
switch($n)
            {
                case 
11:
                    return 
true;
            }
            return 
false;
        case 
'EL'// Griekenland EL
            
switch($n)
            {
                case 
9:
                    return 
true;
            }
            return 
false;
        case 
'HU'// Hongarije HU
            
switch($n)
            {
                case 
8:
                    return 
true;
            }
            return 
false;
        case 
'IE'// Ierland IE
            
switch($n)
            {
                case 
8:
                    return 
true;
            }
            return 
false;
        case 
'IT'// Italië IT
            
switch($n)
            {
                case 
11:
                    return 
true;
            }
            return 
false;
        case 
'LV'// Letland LV
            
switch($n)
            {
                case 
11:
                    return 
true;
            }
            return 
false;
        case 
'LT'// Litouwen LT
            
switch($n)
            {
                case 
9:
                case 
12:
                    return 
true;
            }
            return 
false;
        case 
'LU'// Luxemburg LU
            
switch($n)
            {
                case 
8:
                    return 
true;
            }
            return 
false;
        case 
'MT'// Malta MT
            
switch($n)
            {
                case 
8:
                    return 
true;
            }
            return 
false;
        case 
'NL'// Nederland NL
            
switch($n)
            {
                case 
12:
                    return 
true;
            }
            return 
false;
        case 
'AT'// Oostenrijk AT
            
switch($n)
            {
                case 
9:
                    return 
true;
            }
            return 
false;
        case 
'PL'// Polen PL
            
switch($n)
            {
                case 
10:
                    return 
true;
            }
            return 
false;
        case 
'PT'// Portugal PT
            
switch($n)
            {
                case 
9:
                    return 
true;
            }
            return 
false;
        case 
'RO'// Roemenië RO
            
switch($n)
            {
                case 
10:
                    return 
true;
            }
            return 
false;
        case 
'SI'// Slovenië SI
            
switch($n)
            {
                case 
8:
                    return 
true;
            }
            return 
false;
        case 
'SK'// Slowakije SK
            
switch($n)
            {
                case 
9:
                case 
10:
                    return 
true;
            }
            return 
false;
        case 
'ES'// Spanje ES
            
switch($n)
            {
                case 
9:
                    return 
true;
            }
            return 
false;
        case 
'CZ'// Tsjechië CZ
            
switch($n)
            {
                case 
8:
                case 
9:
                case 
10:
                    return 
true;
            }
            return 
false;
        case 
'GB'// Verenigd Koninkrijk GB
            
switch($n)
            {
                case 
5:
                case 
9:
                case 
12:
                    return 
true;
            }
            return 
false;
        case 
'SE'// Zweden SE
            
switch($n)
            {
                case 
12:
                    return 
true;
            }
            return 
false;
    }

    
// None of those countries
    
return false;