Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Faker\Provider\pl_PL;use Faker\Provider\Base;/*** Generator of Polish vehicle registration numbers.* {@link} http://prawo.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20170002355* {@link} https://pl.wikipedia.org/wiki/Tablice_rejestracyjne_w_Polsce#Tablice_standardowe*/class LicensePlate extends Base{/*** @var array list of Polish voivodeships and respective vehicle registration number prefixes.*/protected static $voivodeships = ['dolnośląskie' => 'D','kujawsko-pomorskie' => 'C','lubelskie' => 'L','lubuskie' => 'F','łódzkie' => 'E','małopolskie' => 'K','mazowieckie' => 'W','opolskie' => 'O','podkarpackie' => 'R','podlaskie' => 'B','pomorskie' => 'G','śląskie' => 'S','świętokrzyskie' => 'T','warmińsko-mazurskie' => 'N','wielkopolskie' => 'P','zachodniopomorskie' => 'Z',];/*** @var array list of special vehicle registration number prefixes.*/protected static $specials = ['army' => 'U','services' => 'H',];/*** @var array list of Polish counties and respective vehicle registration number prefixes.*/protected static $counties = ['D' => ['Jelenia Góra' => ['J'],'Legnica' => ['L'],'Wałbrzych' => ['B'],'Wrocław' => ['W', 'X'],'bolesławiecki' => ['BL'],'dzierżoniowski' => ['DZ'],'głogowski' => ['GL'],'górowski' => ['GR'],'jaworski' => ['JA'],'jeleniogórski' => ['JE'],'kamiennogórski' => ['KA'],'kłodzki' => ['KL'],'legnicki' => ['LE'],'lubański' => ['LB'],'lubiński' => ['LU'],'lwówecki' => ['LW'],'milicki' => ['MI'],'oleśnicki' => ['OL'],'oławski' => ['OA'],'polkowicki' => ['PL'],'strzeliński' => ['ST'],'średzki' => ['SR'],'świdnicki' => ['SW'],'trzebnicki' => ['TR'],'wałbrzyski' => ['BA'],'wołowski' => ['WL'],'wrocławski' => ['WR'],'ząbkowicki' => ['ZA'],'zgorzelecki' => ['ZG'],'złotoryjski' => ['ZL'],],'C' => ['Bydgoszcz' => ['B'],'Grudziądz' => ['G'],'Toruń' => ['T'],'Włocławek' => ['W'],'aleksandrowski' => ['AL'],'brodnicki' => ['BR'],'bydgoski' => ['BY'],'chełmiński' => ['CH'],'golubsko-dobrzyński' => ['GD'],'grudziądzki' => ['GR'],'inowrocławski' => ['IN'],'lipnowski' => ['LI'],'mogileński' => ['MG'],'nakielski' => ['NA'],'radziejowski' => ['RA'],'rypiński' => ['RY'],'sępoleński' => ['SE'],'świecki' => ['SW'],'toruński' => ['TR'],'tucholski' => ['TU'],'wąbrzeski' => ['WA'],'włocławski' => ['WL'],'żniński' => ['ZN'],],'L' => ['Biała Podlaska' => ['B'],'Chełm' => ['C'],'Lublin' => ['U'],'Zamość' => ['Z'],'bialski' => ['BI'],'biłgorajski' => ['BL'],'chełmski' => ['CH'],'hrubieszowski' => ['HR'],'janowski' => ['JA'],'krasnostawski' => ['KS'],'kraśnicki' => ['KR'],'lubartowski' => ['LB'],'lubelski' => ['UB'],'łęczyński' => ['LE'],'łukowski' => ['LU'],'opolski' => ['OP'],'parczewski' => ['PA'],'puławski' => ['PU'],'radzyński' => ['RA'],'rycki' => ['RY'],'świdnicki' => ['SW'],'tomaszowski' => ['TM'],'włodawski' => ['WL'],'zamojski' => ['ZA'],],'F' => ['Gorzów Wielkopolski' => ['G'],'Zielona Góra' => ['Z'],'gorzowski' => ['GW'],'krośnieński' => ['KR'],'międzyrzecki' => ['MI'],'nowosolski' => ['NW'],'słubicki' => ['SL'],'strzelecko-drezdenecki' => ['SD'],'sulęciński' => ['SU'],'świebodziński' => ['SW'],'wschowski' => ['WS'],'zielonogórski' => ['ZI'],'żagański' => ['ZG'],'żarski' => ['ZA'],],'E' => ['Łódź' => ['L'],'Piotrków Trybunalski' => ['P'],'Skierniewice' => ['S'],'brzeziński' => ['BR'],'bełchatowski' => ['BE'],'kutnowski' => ['KU'],'łaski' => ['LA'],'łęczycki' => ['LE'],'łowicki' => ['LC'],'łódzki wschodni' => ['LW'],'opoczyński' => ['OP'],'pabianicki' => ['PA'],'pajęczański' => ['PJ'],'piotrkowski' => ['PI'],'poddębicki' => ['PD'],'radomszczański' => ['RA'],'rawski' => ['RW'],'sieradzki' => ['SI'],'skierniewicki' => ['SK'],'tomaszowski' => ['TM'],'wieluński' => ['WI'],'wieruszowski' => ['WE'],'zduńskowolski' => ['ZD'],'zgierski' => ['ZG'],],'K' => ['Kraków' => ['R'],'Nowy Sącz' => ['N'],'Tarnów' => ['T'],'bocheński' => ['BA', 'BC'],'brzeski' => ['BR'],'chrzanowski' => ['CH'],'dąbrowski' => ['DA'],'gorlicki' => ['GR'],'krakowski' => ['RA'],'limanowski' => ['LI'],'miechowski' => ['MI'],'myślenicki' => ['MY'],'nowosądecki' => ['NS'],'nowotarski' => ['NT'],'olkuski' => ['OL'],'oświęcimski' => ['OS'],'proszowicki' => ['PR'],'suski' => ['SU'],'tarnowski' => ['TA'],'tatrzański' => ['TT'],'wadowicki' => ['WA'],'wielicki' => ['WI'],],'W' => ['Ostrołęka' => ['O'],'Płock' => ['P'],'Radom' => ['R'],'Siedlce' => ['S'],'białobrzeski' => ['BR'],'ciechanowski' => ['CI'],'garwoliński' => ['G'],'gostyniński' => ['GS'],'grodziski' => ['GM'],'grójecki' => ['GR'],'kozienicki' => ['KZ'],'legionowski' => ['L'],'lipski' => ['LI'],'łosicki' => ['LS'],'makowski' => ['MA'],'miński' => ['M'],'mławski' => ['ML'],'nowodworski' => ['ND'],'ostrołęcki' => ['OS'],'ostrowski' => ['OR'],'otwocki' => ['OT'],'piaseczyński' => ['PA', 'PI'],'płocki' => ['PL'],'płoński' => ['PN'],'pruszkowski' => ['PP', 'PR', 'PS'],'przasnyski' => ['PZ'],'przysuski' => ['PY'],'pułtuski' => ['PU'],'radomski' => ['RA'],'siedlecki' => ['SI'],'sierpecki' => ['SE'],'sochaczewski' => ['SC'],'sokołowski' => ['SK'],'szydłowiecki' => ['SZ'],'warszawski' => ['A', 'B', 'D', 'E', 'F', 'H', 'I', 'J', 'K', 'N', 'T', 'U', 'W', 'X', 'Y'],'warszawski zachodni' => ['Z'],'węgrowski' => ['WE'],'wołomiński' => ['WL', 'V'],'wyszkowski' => ['WY'],'zwoleński' => ['ZW'],'żuromiński' => ['ZU'],'żyrardowski' => ['ZY'],],'O' => ['Opole' => ['P'],'brzeski' => ['B'],'głubczycki' => ['GL'],'kędzierzyńsko-kozielski' => ['K'],'kluczborski' => ['KL'],'krapkowicki' => ['KR'],'namysłowski' => ['NA'],'nyski' => ['NY'],'oleski' => ['OL'],'opolski' => ['PO'],'prudnicki' => ['PR'],'strzelecki' => ['ST'],],'R' => ['Krosno' => ['K'],'Przemyśl' => ['P'],'Rzeszów' => ['Z'],'Tarnobrzeg' => ['T'],'bieszczadzki' => ['BI'],'brzozowski' => ['BR'],'dębicki' => ['DE'],'jarosławski' => ['JA'],'jasielski' => ['JS'],'kolbuszowski' => ['KL'],'krośnieński' => ['KR'],'leski' => ['LS'],'leżajski' => ['LE'],'lubaczowski' => ['LU'],'łańcucki' => ['LA'],'mielecki' => ['MI'],'niżański' => ['NI'],'przemyski' => ['PR'],'przeworski' => ['PZ'],'ropczycko-sędziszowski' => ['RS'],'rzeszowski' => ['ZE'],'sanocki' => ['SA'],'stalowowolski' => ['ST'],'strzyżowski' => ['SR'],'tarnobrzeski' => ['TA'],],'B' => ['Białystok' => ['I'],'Łomża' => ['L'],'Suwałki' => ['S'],'augustowski' => ['AU'],'białostocki' => ['IA'],'bielski' => ['BI'],'grajewski' => ['GR'],'hajnowski' => ['HA'],'kolneński' => ['KL'],'łomżyński' => ['LM'],'moniecki' => ['MN'],'sejneński' => ['SE'],'siemiatycki' => ['SI'],'sokólski' => ['SK'],'suwalski' => ['SU'],'wysokomazowiecki' => ['WM'],'zambrowski' => ['ZA'],],'G' => ['Gdańsk' => ['D'],'Gdynia' => ['A'],'Słupsk' => ['S'],'Sopot' => ['SP'],'bytowski' => ['BY'],'chojnicki' => ['CH'],'człuchowski' => ['CZ'],'gdański' => ['DA'],'kartuski' => ['KY', 'KA'],'kościerski' => ['KS'],'kwidzyński' => ['KW'],'lęborski' => ['LE'],'malborski' => ['MB'],'nowodworski' => ['ND'],'pucki' => ['PU'],'słupski' => ['SL'],'starogardzki' => ['ST'],'sztumski' => ['SZ'],'tczewski' => ['TC'],'wejherowski' => ['WE', 'WO'],],'S' => ['Bielsko-Biała' => ['B'],'Bytom' => ['Y'],'Chorzów' => ['H'],'Częstochowa' => ['C'],'Dąbrowa Górnicza' => ['D'],'Gliwice' => ['G'],'Jastrzębie-Zdrój' => ['JZ'],'Jaworzno' => ['J'],'Katowice' => ['K'],'Mysłowice' => ['M'],'Piekary Śląskie' => ['PI'],'Ruda Śląska,' => ['L', 'RS'],'Rybnik' => ['R'],'Siemianowice Śląskie' => ['I'],'Sosnowiec' => ['O'],'Świętochłowice' => ['W'],'Tychy' => ['T'],'Zabrze' => ['Z'],'Żory' => ['ZO'],'będziński' => ['BE'],'bielski' => ['BI'],'cieszyński' => ['CN', 'CI'],'częstochowski' => ['CZ'],'gliwicki' => ['GL'],'kłobucki' => ['KL'],'lubliniecki' => ['LU'],'mikołowski' => ['MI'],'myszkowski' => ['MY'],'pszczyński' => ['PS'],'raciborski' => ['RC'],'rybnicki' => ['RB'],'tarnogórski' => ['TA'],'bieruńsko - lędziński' => ['BL'],'wodzisławski' => ['WD', 'WZ'],'zawierciański' => ['ZA'],'żywiecki' => ['ZY'],],'T' => ['Kielce' => ['K'],'buski' => ['BU'],'jędrzejowski' => ['JE'],'kazimierski' => ['KA'],'kielecki' => ['KI'],'konecki' => ['KN'],'opatowski' => ['OP'],'ostrowiecki' => ['OS'],'pińczowski' => ['PI'],'sandomierski' => ['SA'],'skarżyski' => ['SK'],'starachowicki' => ['ST'],'staszowski' => ['SZ'],'włoszczowski' => ['LW'],],'N' => ['Elbląg' => ['E'],'Olsztyn' => ['O'],'bartoszycki' => ['BA'],'braniewski' => ['BR'],'działdowski' => ['DZ'],'elbląski' => ['EB'],'ełcki' => ['EL'],'giżycki' => ['GI'],'iławski' => ['IL'],'kętrzyński' => ['KE'],'lidzbarski' => ['LI'],'mrągowski' => ['MR'],'nidzicki' => ['NI'],'nowomiejski' => ['NM'],'olecki' => ['OE'],'gołdapski' => ['GO'],'olsztyński' => ['OL'],'ostródzki' => ['OS'],'piski' => ['PI'],'szczycieński' => ['SZ'],'węgorzewski' => ['WE'],],'P' => ['Kalisz' => ['A', 'K'],'Konin' => ['KO', 'N'],'Leszno' => ['L'],'Poznań' => ['O', 'Y'],'chodzieski' => ['CH'],'czarnkowsko-trzcianecki' => ['CT'],'gnieźnieński' => ['GN'],'gostyński' => ['GS'],'grodziski' => ['GO'],'jarociński' => ['JA'],'kaliski' => ['KA'],'kępiński' => ['KE'],'kolski' => ['KL'],'koniński' => ['KN'],'kościański' => ['KS'],'krotoszyński' => ['KR'],'leszczyński' => ['LE'],'międzychodzki' => ['MI'],'nowotomyski' => ['NT'],'obornicki' => ['OB'],'ostrowski' => ['OS'],'ostrzeszowski' => ['OT'],'pilski' => ['P'],'pleszewski' => ['PL'],'poznański' => ['OZ', 'Z'],'rawicki' => ['RA'],'słupecki' => ['SL'],'szamotulski' => ['SZ'],'średzki' => ['SR'],'śremski' => ['SE'],'turecki' => ['TU'],'wągrowiecki' => ['WA'],'wolsztyński' => ['WL'],'wrzesiński' => ['WR'],'złotowski' => ['ZL'],],'Z' => ['Koszalin' => ['K'],'Szczecin' => ['S', 'Z'],'Świnoujście' => ['SW'],'białogardzki' => ['BI'],'choszczeński' => ['CH'],'drawski' => ['DR'],'goleniowski' => ['GL'],'gryficki' => ['GY'],'gryfiński' => ['GR'],'kamieński' => ['KA'],'kołobrzeski' => ['KL'],'koszaliński' => ['KO'],'łobeski' => ['LO'],'myśliborski' => ['MY'],'policki' => ['PL'],'pyrzycki' => ['PY'],'sławieński' => ['SL'],'stargardzki' => ['ST'],'szczecinecki' => ['SZ'],'świdwiński' => ['SD'],'wałecki' => ['WA'],],'U' => ['Siły Zbrojne Rzeczypospolitej Polskiej' => ['A', 'B', 'C', 'D', 'E', 'G', 'I', 'J', 'K', 'L'],],'H' => ['Centralne Biuro Antykorupcyjne' => ['A'],'Służba Ochrony Państwa' => ['BA', 'BB', 'BE', 'BF', 'BG'],'Służba Celno-Skarbowa' => ['CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CR'],'Agencja Bezpieczeństwa Wewnętrznego' => ['K'],'Agencja Wywiadu' => ['K'],'Służba Kontrwywiadu Wojskowego' => ['M'],'Służba Wywiadu Wojskowego' => ['M'],'Policja' => ['PA', 'PB', 'PC', 'PD', 'PE', 'PF', 'PG', 'PH', 'PJ', 'PK', 'PL', 'PL', 'PL', 'PL', 'PL', 'PM', 'PN', 'PP', 'PS', 'PT', 'PU', 'PW', 'PZ'],'Straż Graniczna' => ['WA', 'WK'],],];/*** @var array list of regex expressions matching Polish license plate suffixess when county code is 1 character long.*/protected static $plateSuffixesGroup1 = ['\d{5}','\d{4}[A-PR-Z]','\d{3}[A-PR-Z]{2}','[1-9][A-PR-Z]\d{3}','[1-9][A-PR-Z]{2}\d{2}',];/*** @var array list of regex expressions matching Polish license plate suffixess when county code is 2 characters long.*/protected static $plateSuffixesGroup2 = ['[A-PR-Z]\d{3}','\d{2}[A-PR-Z]{2}','[1-9][A-PR-Z]\d{2}','\d{2}[A-PR-Z][1-9]','[1-9][A-PR-Z]{2}[1-9]','[A-PR-Z]{2}\d{2}','\d{5}','\d{4}[A-PR-Z]','\d{3}[A-PR-Z]{2}','[A-PR-Z]\d{2}[A-PR-Z]','[A-PR-Z][1-9][A-PR-Z]{2}',];/*** Generates random license plate.** @param bool $special whether special license plates should be included* @param array|null $voivodeships list of voivodeships license plate should be generated from* @param array|null $counties list of counties license plate should be generated from*/public static function licensePlate(bool $special = false,?array $voivodeships = null,?array $counties = null): string {$voivodeshipsAvailable = static::$voivodeships + ($special ? static::$specials : []);$voivodeshipCode = static::selectRandomArea($voivodeshipsAvailable, $voivodeships);$countiesAvailable = static::$counties[$voivodeshipCode];$countySelected = self::selectRandomArea($countiesAvailable, $counties);$countyCode = static::randomElement($countySelected);$suffix = static::regexify(static::randomElement(strlen($countyCode) === 1 ? static::$plateSuffixesGroup1 : static::$plateSuffixesGroup2));return "{$voivodeshipCode}{$countyCode} {$suffix}";}/*** Selects random area from the list of available and requested.*/protected static function selectRandomArea(array $available, ?array $requested){$requested = array_intersect(array_keys($available), $requested ?? []);if (empty($requested)) {$requested = array_keys($available);}return $available[static::randomElement($requested)];}}