Jacek Kowalski
2014-06-11 5ab2921256e688e2f005b04bfe08f8c8bb91fd68
commit | author | age
8bd4d9 1 <?php
JK 2 class rejestracje_data {
3 static $wyrozniki = array(
4   'B' => 'podlaskie',
5   'BAU' => 'Augustów',
6   'BBI' => 'Bielsk Podlaski',
7   'BGR' => 'Grajewo',
8   'BHA' => 'Hajnówka',
9   'BI' => 'Białystok miasto',
10   'BIA' => 'Białystok powiat',
11   'BKL' => 'Kolno',
12   'BL' => 'Łomża miasto',
13   'BLM' => 'Łomża powiat',
14   'BMN' => 'Mońki',
15   'BS' => 'Suwałki miasto',
16   'BSE' => 'Sejny',
17   'BSI' => 'Siemiatycze',
18   'BSK' => 'Sokółka',
19   'BSU' => 'Suwałki powiat',
20   'BWM' => 'Wysokie Mazowieckie',
21   'BZA' => 'Zambrów',
22   'C' => 'kujawsko-pomorskie',
23   'CAL' => 'Aleksandrów Kujawski',
24   'CB' => 'Bydgoszcz miasto',
25   'CBR' => 'Brodnica',
26   'CBY' => 'Bydgoszcz powiat',
27   'CCH' => 'Chełmno',
28   'CG' => 'Grudziądz miasto',
29   'CGD' => 'Golub-Dobrzyń',
30   'CGR' => 'Grudziądz powiat',
31   'CIN' => 'Inowrocław',
32   'CLI' => 'Lipno',
33   'CMG' => 'Mogilno',
34   'CNA' => 'Nakło nad Notecią',
35   'CRA' => 'Radziejów',
36   'CRY' => 'Rypin',
37   'CSE' => 'Sępólno Krajeńskie',
38   'CSW' => 'Świecie',
39   'CT' => 'Toruń miasto',
40   'CTR' => 'Toruń powiat',
41   'CTU' => 'Tuchola',
42   'CW' => 'Włocławek miasto',
43   'CWA' => 'Wąbrzeźno',
44   'CWL' => 'Włocławek powiat',
45   'CZN' => 'Żnin',
46   'D' => 'dolnośląskie',
47   'DB' => 'Wałbrzych miasto',
48   'DBA' => 'Wałbrzych powiat',
49   'DBL' => 'Bolesławiec',
50   'DDZ' => 'Dzierżoniów',
51   'DGL' => 'Głogów',
52   'DGR' => 'Góra',
53   'DJ' => 'Jelenia Góra miasto',
54   'DJA' => 'Jawor',
55   'DJE' => 'Jelenia Góra powiat',
56   'DKA' => 'Kamienna Góra',
57   'DKL' => 'Kłodzko',
58   'DL' => 'Legnica miasto',
59   'DLB' => 'Lubań',
60   'DLE' => 'Legnica powiat',
61   'DLU' => 'Lubin',
62   'DLW' => 'Lwówek',
63   'DMI' => 'Milicz',
64   'DOA' => 'Oława',
65   'DOL' => 'Oleśnica',
66   'DPL' => 'Polkowice',
67   'DSR' => 'Środa Śląska',
68   'DST' => 'Strzelin',
69   'DSW' => 'Świdnica',
70   'DTR' => 'Trzebnica',
71   'DW' => 'Wrocław miasto',
72   'DWL' => 'Wołów',
73   'DWR' => 'Wrocław powiat',
74   'DZA' => 'Ząbkowice',
75   'DZG' => 'Zgorzelec',
76   'DZL' => 'Złotoryja',
77   'E' => 'łódzkie',
78   'EBE' => 'Bełchatów',
79   'EBR' => 'Brzeziny',
80   'EKU' => 'Kutno',
81   'EL' => 'Łódź miasto',
82   'ELA' => 'Łask',
83   'ELC' => 'Łowicz',
84   'ELE' => 'Łęczyca',
85   'ELW' => 'Łódź Wschodni',
86   'EOP' => 'Opoczno',
87   'EP' => 'Piotrków Trybunalski miasto',
88   'EPA' => 'Pabianice',
89   'EPD' => 'Poddębice',
90   'EPI' => 'Piotrków Trybunalski powiat',
91   'EPJ' => 'Pajęczno',
92   'ERA' => 'Radomsko',
93   'ERW' => 'Rawa Mazowiecka',
94   'ES' => 'Skierniewice powiat',
95   'ESI' => 'Sieradz',
96   'ESK' => 'Skierniewice powiat',
97   'ETM' => 'Tomaszów Mazowiecki',
98   'EWE' => 'Wieruszów',
99   'EWI' => 'Wieluń',
100   'EZD' => 'Zduńska Wola',
101   'EZG' => 'Zgierz',
102   'F' => 'lubuskie',
103   'FG' => 'Gorzów Wielkopolski miasto',
104   'FGW' => 'Gorzów Wielkopolski powiat',
105   'FKR' => 'Krosno Odrzańskie',
106   'FMI' => 'Międzyrzecz',
107   'FNW' => 'Nowa Sól',
108   'FSD' => 'Strzelce Krajeńskie',
109   'FSL' => 'Słubice',
110   'FSU' => 'Sulęcin',
111   'FSW' => 'Świebodzin',
112   'FWS' => 'Wschowa',
113   'FZ' => 'Zielona Góra miasto',
114   'FZA' => 'Żary',
115   'FZG' => 'Żagań',
116   'FZI' => 'Zielona Góra powiat',
117   'G' => 'pomorskie',
118   'GA' => 'Gdynia',
119   'GBY' => 'Bytów',
120   'GCH' => 'Chojnice',
121   'GCZ' => 'Człuchów',
122   'GD' => 'Gdańsk miasto',
123   'GDA' => 'Pruszcz Gdański',
124   'GKA' => 'Kartuzy',
125   'GKS' => 'Kościerzyna',
126   'GKW' => 'Kwidzyn',
127   'GLE' => 'Lębork',
128   'GMB' => 'Malbork',
129   'GND' => 'Nowy Dwór Gdański',
130   'GPU' => 'Puck',
131   'GS' => 'Słupsk miasto',
132   'GSL' => 'Słupsk powiat',
133   'GSP' => 'Sopot',
134   'GST' => 'Starogard Gdański',
135   'GSZ' => 'Sztum',
136   'GTC' => 'Tczew',
137   'GWE' => 'Wejherowo',
138   'HA' => 'Centralne Biuro Antykorupcyjne',
139   'HB' => 'Biuro Ochrony Rządu',
140   'HC' => 'Służba Celna',
141   'HK' => 'Agencja Bezpieczeństwa Wewnętrznego/Agencja Wywiadu',
142   'HM' => 'Służba Kontrwywiadu Wojskowego/Służba Wywiadu Wojskowego',
143   'HN' => 'GROM',
144   'HPA' => 'Komenda Główna Policji',
145   'HPB' => 'Policja, woj. dolnośląskie',
146   'HPC' => 'Policja, woj. kujawsko-pomorskie',
147   'HPD' => 'Policja, woj. lubelskie',
148   'HPE' => 'Policja, woj. lubuskie',
149   'HPF' => 'Policja, woj. łódzkie',
150   'HPG' => 'Policja, woj. małopolskie',
151   'HPH' => 'Policja, woj. mazowieckie',
152   'HPJ' => 'Policja, woj. opolskie',
153   'HPK' => 'Policja, woj. podkarpackie',
154   'HPL' => 'Jednostki szkoleniowe Policji',
155   'HPM' => 'Policja, woj. podlaskie',
156   'HPN' => 'Policja, woj. pomorskie',
157   'HPP' => 'Policja, woj. śląskie',
158   'HPS' => 'Policja, woj. świętokrzyskie',
159   'HPT' => 'Policja, woj. warmińsko-mazurskie',
160   'HPU' => 'Policja, woj. wielkopolskie',
161   'HPW' => 'Policja, woj. zachodniopomorskie',
162   'HPZ' => 'Komenda Główna Policji',
163   'HS' => 'Kontrola Skarbowa',
164   'HW' => 'Straż Graniczna',
165   'K' => 'małopolskie',
166   'KBC' => 'Bochnia',
167   'KBR' => 'Brzesko',
168   'KCH' => 'Chrzanów',
169   'KDA' => 'Dąbrowa Tarnowska',
170   'KGR' => 'Gorlice',
171   'KLI' => 'Limanowa',
172   'KMI' => 'Miechów',
173   'KMY' => 'Myślenice',
174   'KN' => 'Nowy Sącz miasto',
175   'KNS' => 'Nowy Sącz powiat',
176   'KNT' => 'Nowy Targ',
177   'KOL' => 'Olkusz',
178   'KOS' => 'Oświęcim',
179   'KPR' => 'Proszowice',
180   'KR' => 'Kraków miasto',
181   'KRA' => 'Kraków powiat',
182   'KSU' => 'Sucha Beskidzka',
183   'KT' => 'Tarnów miasto',
184   'KTA' => 'Tarnów powiat',
185   'KTT' => 'Zakopane',
186   'KWA' => 'Wadowice',
187   'KWI' => 'Wieliczka',
188   'L' => 'lubelskie',
189   'LB' => 'Biała Podlaska miasto',
190   'LBI' => 'Biała Podlaska powiat',
191   'LBL' => 'Biłgoraj',
192   'LC' => 'Chełm miasto',
193   'LCH' => 'Chełm powiat',
194   'LHR' => 'Hrubieszów',
195   'LJA' => 'Janów Lubelski',
196   'LKR' => 'Kraśnik',
197   'LKS' => 'Krasnystaw',
198   'LLB' => 'Lubartów',
199   'LLE' => 'Łęczna',
200   'LLU' => 'Łuków',
201   'LOP' => 'Opole Lubelskie',
202   'LPA' => 'Parczew',
203   'LPU' => 'Puławy',
204   'LRA' => 'Radzyń Podlaski',
205   'LRY' => 'Ryki',
206   'LSW' => 'Świdnik',
207   'LTM' => 'Tomaszów Lubelski',
208   'LU' => 'Lublin miasto',
209   'LUB' => 'Lublin powiat',
210   'LWL' => 'Włodawa',
211   'LZ' => 'Zamość miasto',
212   'LZA' => 'Zamość powiat',
213   'N' => 'warmińsko-mazurskie',
214   'NBA' => 'Bartoszyce',
215   'NBR' => 'Braniewo',
216   'NDZ' => 'Działdowo',
217   'NE' => 'Elbląg miasto',
218   'NEB' => 'Elbląg powiat',
219   'NEL' => 'Ełk',
220   'NGI' => 'Giżycko',
221   'NGO' => 'Gołdap',
222   'NIL' => 'Iława',
223   'NKE' => 'Kętrzyn',
224   'NLI' => 'Lidzbark Warmiński',
225   'NMR' => 'Mrągowo',
226   'NNI' => 'Nidzica',
227   'NNM' => 'Nowe Miasto Lubawskie',
228   'NO' => 'Olsztyn miasto',
229   'NOE' => 'Olecko-Gołdap',
230   'NOG' => 'Olecko',
231   'NOL' => 'Olsztyn powiat',
232   'NOS' => 'Ostróda',
233   'NPI' => 'Pisz',
234   'NSZ' => 'Szczytno',
235   'NWE' => 'Węgorzewo',
236   'O' => 'opolskie',
237   'OB' => 'Brzeg',
238   'OGL' => 'Głubczyce',
239   'OK' => 'Kędzierzyn Koźle',
240   'OKL' => 'Kluczbork',
241   'OKR' => 'Krapkowice',
242   'ONA' => 'Namysłów',
243   'ONY' => 'Nysa',
244   'OOL' => 'Olesno',
245   'OP' => 'Opole miasto',
246   'OPO' => 'Opole powiat',
247   'OPR' => 'Prudnik',
248   'OST' => 'Strzelce Opolskie',
249   'P' => 'wielkopolskie',
250   'PCH' => 'Chodzież',
251   'PCT' => 'Czarnków',
252   'PGN' => 'Gniezno',
253   'PGO' => 'Grodzisk Wielkopolski',
254   'PGS' => 'Gostyń',
255   'PJA' => 'Jarocin',
256   'PK' => 'Kalisz miasto',
257   'PKA' => 'Kalisz powiat',
258   'PKE' => 'Kępno',
259   'PKL' => 'Koło',
260   'PKO' => 'Konin miasto',
261   'PKR' => 'Krotoszyn',
262   'PKS' => 'Kościan',
263   'PL' => 'Leszno miasto',
264   'PLE' => 'Leszno powiat',
265   'PLN' => 'Konin powiat',
266   'PMI' => 'Międzychód',
267   'PN' => 'Konin miasto',
268   'PNT' => 'Nowy Tomyśl',
269   'PO' => 'Poznań miasto',
270   'POB' => 'Oborniki',
271   'POS' => 'Ostrów Wielkopolski',
272   'POT' => 'Ostrzeszów',
273   'POZ' => 'Poznań powiat',
274   'PP' => 'Piła',
275   'PPL' => 'Pleszew',
276   'PRA' => 'Rawicz',
277   'PSE' => 'Śrem',
278   'PSL' => 'Słupca',
279   'PSR' => 'Środa Wielkopolska',
280   'PSZ' => 'Szamotuły',
281   'PTU' => 'Turek',
282   'PWA' => 'Wągrowiec',
283   'PWL' => 'Wolsztyn',
284   'PWR' => 'Września',
285   'PZ' => 'Poznań powiat',
286   'PZL' => 'Złotów',
287   'R' => 'podkarpackie',
288   'RBI' => 'Ustrzyki Dolne',
289   'RBR' => 'Brzozów',
290   'RDE' => 'Dębica',
291   'RJA' => 'Jarosław',
292   'RJS' => 'Jasło',
293   'RK' => 'Krosno miasto',
294   'RKL' => 'Kolbuszowa',
295   'RKR' => 'Krosno powiat',
296   'RLA' => 'Łańcut',
297   'RLE' => 'Leżajsk',
298   'RLS' => 'Lesko',
299   'RLU' => 'Lubaczów',
300   'RMI' => 'Mielec',
301   'RNI' => 'Nisko',
302   'RP' => 'Przemyśl miasto',
303   'RPR' => 'Przemyśl powiat',
304   'RPZ' => 'Przeworsk',
305   'RRS' => 'Ropczyce',
306   'RSA' => 'Sanok',
307   'RSR' => 'Strzyżów',
308   'RST' => 'Stalowa Wola',
309   'RT' => 'Tarnobrzeg miasto',
310   'RTA' => 'Tarnobrzeg powiat',
311   'RZ' => 'Rzeszów miasto',
312   'RZE' => 'Rzeszów powiat',
313   'S' => 'śląskie',
314   'SB' => 'Bielsko-Biała miasto',
315   'SBE' => 'Będzin',
316   'SBI' => 'Bielsko-Biała powiat',
317   'SBL' => 'Tychy powiat',
318   'SC' => 'Częstochowa miasto',
319   'SCI' => 'Cieszyn',
320   'SCZ' => 'Częstochowa powiat',
321   'SD' => 'Dąbrowa Górnicza',
322   'SG' => 'Gliwice miasto',
323   'SGL' => 'Gliwice powiat',
324   'SH' => 'Chorzów',
325   'SI' => 'Siemianowice Śląskie',
326   'SJ' => 'Jaworzno',
327   'SJZ' => 'Jastrzębie Zdrój',
328   'SK' => 'Katowice',
329   'SKL' => 'Kłobuck',
330   'SL' => 'Ruda Śląska',
331   'SLU' => 'Lubliniec',
332   'SM' => 'Mysłowice',
333   'SMI' => 'Mikołów',
334   'SMY' => 'Myszków',
335   'SO' => 'Sosnowiec',
336   'SPI' => 'Piekary Śląskie',
337   'SPS' => 'Pszczyna',
338   'SR' => 'Rybnik miasto',
339   'SRB' => 'Rybnik powiat',
340   'SRC' => 'Racibórz',
341   'SRS' => 'Ruda Śląska',
342   'ST' => 'Tychy miasto',
343   'STA' => 'Tarnowskie Góry',
344   'STY' => 'Tychy powiat',
345   'SW' => 'Świętochłowice',
346   'SWD' => 'Wodzisław',
347   'SY' => 'Bytom',
348   'SZ' => 'Zabrze',
349   'SZA' => 'Zawiercie',
350   'SZO' => 'Żory',
351   'SZY' => 'Żywiec',
352   'T' => 'świętokrzyskie',
353   'TBU' => 'Busko',
354   'TJE' => 'Jędrzejów',
355   'TK' => 'Kielce miasto',
356   'TKA' => 'Kazimierza Wielka',
357   'TKI' => 'Kielce powiat',
358   'TKN' => 'Końskie',
359   'TLW' => 'Włoszczowa',
360   'TOP' => 'Opatów',
361   'TOS' => 'Ostrowiec Świętokrzyski',
362   'TPI' => 'Pińczów',
363   'TSA' => 'Sandomierz',
364   'TSK' => 'Skarżysko-Kamienna',
365   'TST' => 'Starachowice',
366   'TSZ' => 'Staszów',
367   'UA' => 'Siły Zbrojne: samochody osobowe, osobowo-terenowe oraz specjalne na podwoziu osobowym (osobowo-terenowym)',
368   'UB' => 'Siły Zbrojne: transportery opancerzone',
369   'UC' => 'Siły Zbrojne: samochody osobowo-ciężarowe (dostawcze)',
370   'UD' => 'Siły Zbrojne: autobusy',
371   'UE' => 'Siły Zbrojne: samochody ciężarowe i ciężarowo-terenowe o przeznaczeniu transportowym',
372   'UG' => 'Siły Zbrojne: pojazdy specjalne na podwoziu ciężarowym (ciężarowo-terenowym)',
373   'UI' => 'Siły Zbrojne: przyczepy transportowe',
374   'UJ' => 'Siły Zbrojne: przyczepy specjalne',
375   'UK' => 'Siły Zbrojne: motocykle',
376   'W' => 'mazowieckie',
377   'WA' => 'Warszawa-Białołęka',
378   'WB' => 'Warszawa-Bemowo',
379   'WBR' => 'Białobrzegi',
380   'WCI' => 'Ciechanów',
381   'WD' => 'Warszawa-Bielany',
382   'WE' => 'Warszawa-Mokotów',
383   'WF' => 'Warszawa-Praga Południe',
384   'WG' => 'Garwolin',
385   'WGM' => 'Grodzisk Mazowiecki',
386   'WGR' => 'Grójec',
387   'WGS' => 'Gostynin',
388   'WH' => 'Warszawa-Praga Północ',
389   'WI' => 'Warszawa-Śródmieście',
390   'WJ' => 'Warszawa-Targówek',
391   'WK' => 'Warszawa-Ursus',
392   'WKZ' => 'Kozienice',
393   'WL' => 'Legionowo',
394   'WLI' => 'Lipsko',
395   'WLS' => 'Łosice',
396   'WM' => 'Mińsk Mazowiecki',
397   'WMA' => 'Maków Mazowiecki',
398   'WML' => 'Mława',
399   'WN' => 'Warszawa-Ursynów',
400   'WND' => 'Nowy Dwór Mazowiecki',
401   'WO' => 'Ostrołęka miasto',
402   'WOR' => 'Ostrów Mazowiecki',
403   'WOS' => 'Ostrołęka powiat',
404   'WOT' => 'Otwock',
405   'WP' => 'Płock miasto',
406   'WPI' => 'Piaseczno',
407   'WPL' => 'Płock powiat',
408   'WPN' => 'Płońsk',
409   'WPR' => 'Pruszków',
410   'WPU' => 'Pułtusk',
411   'WPY' => 'Przysucha',
412   'WPZ' => 'Przasnysz',
413   'WR' => 'Radom miasto',
414   'WRA' => 'Radom powiat',
415   'WS' => 'Siedlce miasto',
416   'WSC' => 'Sochaczew',
417   'WSE' => 'Sierpc',
418   'WSI' => 'Siedlce powiat',
419   'WSK' => 'Sokołów Podlaski',
420   'WSZ' => 'Szydłowiec',
421   'WT' => 'Warszawa-Wawer',
422   'WU' => 'Warszawa-Ochota',
423   'WW' => array(
424     'Warszawa',
425     'A' => 'Warszawa-Rembertów',
426     'C' => 'Warszawa-Rembertów',
427     'E' => 'Warszawa-Rembertów',
428     'F' => 'Warszawa-Wilanów',
429     'G' => 'Warszawa-Wilanów',
430     'H' => 'Warszawa-Wilanów',
431     'J' => 'Warszawa-Wilanów',
432     'K' => 'Warszawa-Włochy',
433     'L' => 'Warszawa-Włochy',
434     'M' => 'Warszawa-Włochy',
435     'N' => 'Warszawa-Włochy',
436     'V' => 'Warszawa-Włochy',
437     'X' => 'Warszawa-Rembertów',
438     'Y' => 'Urząd Miasta stołecznego Warszawy',
439     'W' => 'Warszawa-Wilanów',
440     'YV' => 'Warszawa-Wesoła',
441     'YY' => 'Warszawa-Sulejówek',
442     'YZ' => 'Warszawa-Wesoła',
443   ),
444   'WWE' => 'Węgrów',
445   'WWL' => 'Wołomin',
446   'WWY' => 'Wyszków',
447   'WX' => 'Warszawa-Żoliborz',
448   'WY' => 'Warszawa-Wola',
449   'WZ' => 'Warszawa-Zachód',
450   'WZU' => 'Żuromin',
451   'WZW' => 'Zwoleń',
452   'WZY' => 'Żyrardów',
453   'Z' => 'zachodniopomorskie',
454   'ZBI' => 'Białogard',
455   'ZCH' => 'Choszczno',
456   'ZDR' => 'Drawsko',
457   'ZGL' => 'Goleniów',
458   'ZGR' => 'Gryfino',
459   'ZGY' => 'Gryfice',
460   'ZK' => 'Koszalin miasto',
461   'ZKA' => 'Kamień Pomorski',
462   'ZKL' => 'Kołobrzeg',
463   'ZKO' => 'Koszalin powiat',
464   'ZLO' => 'Łobez',
465   'ZMY' => 'Myślibórz',
466   'ZPL' => 'Police',
467   'ZPY' => 'Pyrzyce',
468   'ZS' => 'Szczecin',
469   'ZSD' => 'Świdwin',
470   'ZSL' => 'Sławno',
471   'ZST' => 'Stargard Szczeciński',
472   'ZSW' => 'Świnoujście',
473   'ZSZ' => 'Szczecinek',
474   'ZWA' => 'Wałcz',
475 );
476
477 static $dyplomatyczne = array(
478     '001' => 'USA',
479     '002' => 'Wielka Brytania',
480     '003' => 'Francja',
481     '004' => 'Kanada',
482     '005' => 'Niemcy',
483     '006' => 'Holandia',
484     '007' => 'Włochy',
485     '008' => 'Austria',
486     '009' => 'Japonia',
487     '010' => 'Turcja',
488     '011' => 'Belgia',
489     '012' => 'Dania',
490     '013' => 'Norwegia',
491     '014' => 'Grecja',
492     '015' => 'Australia',
493     '016' => 'Algieria',
494     '017' => 'Afganistan',
495     '018' => 'Argentyna',
496     '019' => 'Brazylia',
497     '020' => 'Bangladesz',
498     '021' => 'Egipt',
499     '022' => 'Ekwador',
500     '023' => 'Finlandia',
501     '024' => 'Hiszpania',
502     '025' => 'Irak',
503     '026' => 'Iran',
504     '027' => 'Indie',
505     '028' => 'Indonezja',
506     '029' => 'Kolumbia',
507     '030' => 'Malezja',
508     '031' => 'Libia',
509     '032' => 'Maroko',
510     '033' => 'Meksyk',
511     '034' => 'Nigeria',
512     '035' => 'Pakistan',
513     '036' => 'Portugalia',
514     '037' => 'Palestyna',
515     '038' => 'Syria',
516     '039' => 'Szwecja',
517     '040' => 'Szwajcaria',
518     '041' => 'Tunezja',
519     '042' => 'Tajlandia',
520     '043' => 'Wenezuela',
521     '044' => 'Urugwaj',
522     '045' => 'Peru',
523     '046' => 'Jemen',
524     '047' => 'Kostaryka',
525     '048' => 'Kongo',
526     '049' => 'Izrael',
527     '050' => 'Nikaragua',
528     '051' => 'Chile',
529     '052' => 'Watykan',
530     '053' => 'Korea Południowa',
531     '054' => 'Przedstawicielstwo Komisji Wspólnot Europejskich',
532     '055' => 'Irlandia',
533     '056' => 'Bank Światowy',
534     '057' => 'Międzynarodowy Fundusz Walutowy',
535     '058' => 'Filipiny',
536     '059' => 'Międzynarodowa Korporacja Finansowa',
537     '060' => 'RPA',
538     '061' => 'Biuro Instytucji Demokratycznych i Praw Człowieka OBWE',
539     '062' => 'Cypr',
540     '063' => 'Kuwejt',
541     '064' => 'Organizacja Narodów Zjednoczonych',
542     '065' => 'Rosja',
543     '066' => 'Słowacja',
544     '067' => 'Czechy',
545     '068' => 'Bułgaria',
546     '069' => 'Węgry',
547     '070' => 'Rumunia',
548     '071' => 'Wietnam',
549     '072' => 'Serbia',
550     '073' => 'Korea Północna',
551     '074' => 'Kuba',
552     '075' => 'Albania',
553     '076' => 'Chiny',
554     '077' => 'Mongolia',
555     '078' => 'Międzynarodowa Organizacja Pracy',
556     '079' => 'Organizacja Kooperacyjna ds. Kolei',
557     '080' => 'Klub Dyplomatyczny',
558     '081' => 'Laos',
559     '082' => 'Angola',
560     '083' => 'Ukraina',
561     '084' => 'Europejski Bank Odbudowy i Rozwoju',
562     '085' => 'Litwa',
563     '086' => 'Białoruś',
564     '087' => 'Łotwa',
565     '088' => 'Chorwacja',
566     '089' => 'Liban',
567     '090' => 'Słowenia',
568     '091' => 'Gwatemala',
569     '092' => 'Estonia',
570     '093' => 'Macedonia',
571     '094' => 'Mołdawia',
572     '095' => 'Izrael',
573     '096' => 'Armenia',
574     '097' => 'Sri Lanka',
575     '098' => 'Kazachstan',
576     '099' => 'Arabia Saudyjska',
577     '100' => 'Gruzja',
578     '101' => 'Uzbekistan',
579     '102' => 'UN-HABITAT',
580     '103' => 'Nowa Zelandia',
581     '104' => 'Azerbejdżan',
582     '105' => 'Suwerenny Wojskowy Zakon Maltański',
583     '106' => 'Kambodża',
584     '107' => 'Frontex',
585     '108' => 'Luksemburg',
586     '109' => 'Bośnia i Hercegowina',
587     '110' => 'Panama',
588     '111' => 'Katar',
589     '112' => 'Malta',
590 );
591 static$dyplomatyczne_przeznaczenie = array(
592     '{001-099}' => 'Prywatne pojazdy personelu dyplomatycznego',
593     '{200-299}' => 'Prywatne pojazdy attaché wojskowego',
594     '{300-399}' => 'Prywatne pojazdy personelu niedyplomatycznego',
595     '{501-501}' => 'Pojazd służbowy ambasadora',
596     '{500-599}' => 'Służbowe pojazdy ambasady',
597     '{700-799}' => 'Służbowe pojazdy ambasady',
598     '{900-999}' => 'Pojazdy personelu konsularnego',
599 );
600
601 static $formaty = array(
602     'U[!OU]{00001-99999}' => 'specjalne',
603     'U[!OU]{0001-9999}T' => 'specjalne',
604     'H[ABKPW][!Q]{001-999}' => 'specjalne',
605     'H[ABKPW][!Q]{01-99}[!Q][!Q]' => 'specjalne',
606     
607     // Samochodowe wyróżnik trzyliterowy => '', zasoby 1-9
608     '___ _{001-999}' => 'zwykłe',
609     '___ {01-99}__' => 'zwykłe',
610     '___ {1-9}_{01-99}' => 'zwykłe',
611     '___ {00-99}_{1-9}' => 'zwykłe',
612     '___ {1-9}__{1-9}' => 'zwykłe',
613     '___ __{01-99}' => 'zwykłe',
614     '___ {00001-99999}' => 'zwykłe',
615     '___ {0001-9999}_' => 'zwykłe',
616     '___ {001-999}__' => 'zwykłe',
617     '___' => 'wyróżnik',
618     
619     // Samochodowe wyróżnik dwuliterowy => '', zasoby 1-5
620     '__ {00001-99999}' => 'zwykłe',
621     '__ {0001-9999}_' => 'zwykłe',
622     '__ {001-999}__' => 'zwykłe',
623     '__ {0-9}_{001-999}' => 'zwykłe',
624     '__ {0-9}__{01-99}' => 'zwykłe',
625     // Motocyklowe wyróżnik dwuliterowy => '', zasoby 1-2
626     '__ {0001-9999}' => 'motocyklowe',
627     '__ {001-999}_' => 'motocyklowe',
628     '__' => 'wyróżnik',
629     
630     // Tablice zabytkowe
631     '__ {01-99}_' => 'zabytkowe',
632     '___ {0-9}_' => 'zabytkowe',
633     
634     // Tablice dyplomatyczne
635     'W {001000-112999}' => 'dyplomatyczne',
636     
637     // Tablice badawcze
638     '_ {0-9}{001-999}B' => 'badawcze',
639     
640     // Tablice tymczasowe
641     '_ {0-9}{0001-9999}' => 'tymczasowe',
642     '_ {0-9}{001-999}[!B]' => 'tymczasowe',
643     
644     // Tablice indywidualne
645     '_ {0-9}___' => 'indywidualne',
646     '_ {0-9}__{0-9}' => 'indywidualne',
647     '_ {0-9}_{00-99}' => 'indywidualne',
648     '_ {0-9}____' => 'indywidualne',
649     '_ {0-9}___{0-9}' => 'indywidualne',
650     '_ {0-9}__{00-99}' => 'indywidualne',
651     '_ {0-9}_____' => 'indywidualne',
652     '_ {0-9}____{0-9}' => 'indywidualne',
653     '_ {0-9}___{00-99}' => 'indywidualne',
654     '_' => 'wyróżnik',
655 );
656
657 static function regex($format, $tekst) {
658     //echo "\n\n".'NEW REGEX('.$format.', '.$tekst.')'."\n";
659     
660     $olen = strpos($format, ' ');
661     if($olen && !ctype_alpha(substr($tekst, 0, $olen))) return FALSE;
662     
663     $j = 0;
664     for($i=0; $i<strlen($format) && $j<strlen($tekst); $i++) {
665         //echo $i;
666         $chr = substr($format, $i, 1);
667         $part = substr($tekst, $j, 1);
668         
669         if($chr == '_') {
670             //echo "\t".'any character'."\n";
671             if(!ctype_alpha($part)) return FALSE;
672         }
673         elseif($chr == '[') {
674             if(!ctype_alpha($part)) return FALSE;
675             
676             $range = substr($format, $i+1, strpos($format, ']', $i+1)-$i-1);
677             //echo "\t".'one of letters: '.$range."\n";
678             
679             if(substr($range, 0, 1)=='!') {
680                 $range = str_split($range);
681                 array_shift($range);
682                 
683                 if(in_array($part, $range)) {
684                     return FALSE;
685                 }
686             }
687             else
688             {
689                 $range = str_split($range);
690                 
691                 if(!in_array($part, $range)) {
692                     return FALSE;
693                 }
694             }
695             
696             $i += strpos($format, ']', $i+1)-$i;
697         }
698         elseif($chr == '{') {
699             $range = substr($format, $i+1, strpos($format, '}', $i+1)-$i-1);
700             $len = (strlen($range)-1)/2;
701             $part = substr($tekst, $j, $len);
702             
703             //echo "\t".'range: ('.$len.') '.$range."\n";
704             
705             if(!ctype_digit($part)) {
706                 return FALSE;
707             }
708             if($part < substr($range, 0, $len)) {
709                 return FALSE;
710             }
711             if($part > substr($range, $len+1)) {
712                 return FALSE;
713             }
714             
715             $i+=strlen($range)+1;
716             $j+=$len-1;
717         }
718         elseif(ctype_alpha($chr)) {
719             //echo "\t".'letter: '.$chr."\n";
720             if($part!=$chr) {
721                 return FALSE;
722             }
723         }
724         elseif($chr == ' ') {
725             continue;
726         }
727         else
728         {
729             throw new Exception('Unknown character ('.$i.') '.$chr);
730         }
731         
732         $j++;
733     }
734     
735     if($i != strlen($format) || $j != strlen($tekst)) {
736         return FALSE;
737     }
738     
739     if(!$olen) $olen = 0;
740     
741     return $olen;
742 }
743
744 static function find($rej) {
745     $rej = strtoupper(str_replace(array(' ', "\t", "\n", "\r", '-'), '', $rej));
746     foreach(self::$formaty as $format => $typ) {
747         if(($olen=self::regex($format, $rej))!==FALSE) {
748             $return = TRUE;
749             break;
750         }
751     }
752     
753     if(!$return) return array($rej, 'błąd', 'Błędny format numeru rejestracyjnego');
754     
755     if($olen) {
756         $rej = substr($rej, 0, $olen).' '.substr($rej, $olen);
757     }
758     
759     //var_dump($format, $typ, $rej);
760     
761     if($typ == 'dyplomatyczne') {
762         $first = substr($rej, 2, 3);
763         $second = substr($rej, 5, 3);
764         
765         if(!isset(self::$dyplomatyczne[$first])) {
766             return array($rej, 'dyplomatyczna', 'Nieznane państwo/organizacja');
767         }
768         
769         $return = FALSE;
770         
771         foreach(self::$dyplomatyczne_przeznaczenie as $format => $dyp) {
772             if(self::regex($format, $second) !== FALSE) {
773                 $return = TRUE;
774                 break;
775             }
776         }
777         
778         if($return == FALSE) {
779             return array($rej, 'dyplomatyczna', 'Państwo/organizacja: '.self::$dyplomatyczne[$first]);
780         }
781         else
782         {
783             return array($rej, 'dyplomatyczna', 'Państwo/organizacja: '.self::$dyplomatyczne[$first], $dyp);
784         }
785     }
786     elseif($typ == 'indywidualne') {
787         if(!isset(self::$wyrozniki[substr($rej, 0, 1)])) {
788             return array($rej, 'błąd', 'Błędny format numeru rejestracyjnego');
789         }
790         
791         $rej = substr($rej, 0, 1).substr($rej, 2, 1).' '.substr($rej, 3);
792         return array($rej, 'indywidualna', 'Województwo: '.self::$wyrozniki[substr($rej, 0, 1)]);
793     }
794     elseif($typ == 'specjalne') {
795         if(substr($rej, 0, 2) == 'HP') {
796             if(!isset(self::$wyrozniki[substr($rej, 0, 3)])) {
797                 return array($rej, 'błąd', 'Błędny format numeru rejestracyjnego');
798             }
799             
800             return array($rej, 'specjalne', self::$wyrozniki[substr($rej, 0, 3)]);
801         }
802         else
803         {
804             if(!isset(self::$wyrozniki[substr($rej, 0, 2)])) {
805                 return array($rej, 'błąd', 'Błędny format numeru rejestracyjnego');
806             }
807             
808             return array($rej, 'specjalne', self::$wyrozniki[substr($rej, 0, 2)]);
809         }
810     }
811     elseif($typ == 'wyróżnik') {
812         if(!isset(self::$wyrozniki[$rej])) {
813             return array($rej, 'błąd', 'Podany wyróżnik nie istnieje');
814         }
815         else
816         {
817             if(strlen($rej)>1 && isset(self::$wyrozniki[substr($rej, 0, 1)])) {
818                 return array($rej, 'wyróżnik', 'Województwo '.self::$wyrozniki[substr($rej, 0, 1)], self::$wyrozniki[$rej]);
819             }
820             else
821             {
822                 return array($rej, 'wyróżnik', self::$wyrozniki[$rej]);
823             }
824         }
825     }
826     else
827     {
828         if(!isset(self::$wyrozniki[substr($rej, 0, $olen)])) {
829             return array($rej, 'błąd', 'Błędny format numeru rejestracyjnego');
830         }
831         
832         $typ = substr($typ, 0, -1).'a';
833         
834         $return = array($rej, $typ, 'Województwo '.self::$wyrozniki[substr($rej, 0, 1)]);
835         
836         $wyrozniki = self::$wyrozniki[substr($rej, 0, $olen)];
837         
838         if(is_array($wyrozniki)) {
839             $return[] = 'Miasto: '.$wyrozniki[0];
840             if(isset($wyrozniki[substr($rej, 0, 1)])) {
841                 $return[] = 'Dzielnica: '.$wyrozniki[substr($rej, 0, 1)];
842             }
843             elseif(isset($wyrozniki[substr($rej, 0, 2)])) {
844                 $return[] = 'Dzielnica: '.$wyrozniki[substr($rej, 0, 2)];
845             }
846         }
847         else
848         {
849             $return[] = $wyrozniki;
850         }
851         
852         return $return;
853     }
854 }
855 }
856 ?>