Umsatzsteueridentnummer prüfen

Wer auch mal in die Verlegenheit kommt eine Umsatzsteueridentnummer prüfen zu müssen, der kann rein strukturell dies mit folgender Funktion prüfen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/**
* prüft die Umsatzsteueridentnummer aufgrund von Strukturmerkmalen
* der einzelnen Länder
*
* @param string $ustid
* @return bool valid or not
*/
function checkUstId($ustid)
{
  $u = strtoupper(preg_replace('~\W~', '', $ustid));
  $country = substr($u, 0, 2);
  switch ($country)
  {
    case 'AT':
      return (preg_match('~^ATU[A-Z0-9]{8,8}$~', $u) !== 0);
    break;
    case 'BE':
    return (preg_match('~^BE0[0-9]{9,9}$~', $u) !== 0);
    break;
    case 'BG':
    return (preg_match('~^BG[0-9]{9,10}$~', $u) !== 0);
    break;
    case 'CY':
    return (preg_match('~^CY[A-Z0-9]{9,9}$~', $u) !== 0);
    break;
    case 'CZ':
    return (preg_match('~^CZ[0-9]{8,10}$~', $u) !== 0);
    break;
    case 'DE':
    return (preg_match('~^DE[0-9]{9,9}$~', $u) !== 0);
    break;
    case 'DK':
    return (preg_match('~^DK[0-9]{8,8}$~', $u) !== 0);
    break;
    case 'EE':
    return (preg_match('~^EE[0-9]{9,9}$~', $u) !== 0);
    break;
    case 'EL':
    return (preg_match('~^EL[0-9]{9,9}$~', $u) !== 0);
    break;
    case 'ES':
    return (preg_match('~^ES[A-Z0-9]{1,1}[0-9]{7,7}[A-Z0-9]{1,1}$~', $u) !== 0);
    break;
    case 'FI':
    return (preg_match('~^FI[0-9]{8,8}$~', $u) !== 0);
    break;
    case 'FR':
    return (preg_match('~^FR[A-Z0-9]{2,2}[0-9]{9,9}$~', $u) !== 0);
    break;
    case 'GB':
    $result = (preg_match('~^GB[0-9]{9,9}$~', $u) !== 0);
    if ($result)
    return true;
    $result = (preg_match('~^GB[0-9]{12,12}$~', $u) !== 0);
    if ($result)
    return true;
    $result = (preg_match('~^GBGD[0-9]{3,3}$~', $u) !== 0);
    if ($result)
    return true;
    return (preg_match('~^GBHA[0-9]{3,3}$~', $u) !== 0);
    break;
    case 'HU':
    return (preg_match('~^HU[0-9]{8,8}$~', $u) !== 0);
    break;
    case 'IE':
    return (preg_match('~^IE[A-Z0-9]{8,8}$~', $u) !== 0);
    break;
    case 'IT':
    return (preg_match('~^IT[0-9]{11,11}$~', $u) !== 0);
    break;
    case 'LT':
    $result = (preg_match('~^LT[0-9]{9,9}$~', $u) !== 0);
    if ($result)
    return true;
    return (preg_match('~^LT[0-9]{12,12}$~', $u) !== 0);
    break;
    case 'LU':
    return (preg_match('~^LU[0-9]{8,8}$~', $u) !== 0);
    break;
    case 'LV':
    return (preg_match('~^LV[0-9]{11,11}$~', $u) !== 0);
    break;
    case 'MT':
    return (preg_match('~^MT[0-9]{8,8}$~', $u) !== 0);
    break;
    case 'NL':
    return (preg_match('~^NL[A-Z0-9]{9,9}B[A-Z0-9]{2,2}$~', $u) !== 0);
    break;
    case 'PL':
    return (preg_match('~^PL[0-9]{10,10}$~', $u) !== 0);
    break;
    case 'PT':
    return (preg_match('~^MT[0-9]{9,9}$~', $u) !== 0);
    break;
    case 'RO':
    return (preg_match('~^RO[0-9]{2,10}$~', $u) !== 0);
    break;
    case 'SE':
    return (preg_match('~^SE[0-9]{12,12}$~', $u) !== 0);
    break;
    case 'SI':
    return (preg_match('~^SI[0-9]{8,8}$~', $u) !== 0);
    break;
    case 'SK':
    return (preg_match('~^SK[0-9]{10,10}$~', $u) !== 0);
    break;
  }
  return false;
}

Die Quelle dafür ist bei wikipedia.de zu finden.

  • Share/Bookmark

Das könnte Sie auch interessieren:

This entry was posted in Entwicklung and tagged , . Bookmark the permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">