Przejdź do głównej zawartości

Numerik

Walidacja i parsowanie polskich numerów identyfikacyjnych (PESEL, NIP, REGON, KRS, NRB, VAT-EU, IBAN). Zwraca czytelne obiekty danych i precyzyjnie wskazuje przyczyny błędów.

Numerik to biblioteka PHP 8.3+ bez zewnętrznych zależności produkcyjnych. Dzięki niej dowiesz się nie tylko czy podany numer jest błędny, ale przede wszystkim dlaczego.

PESEL

Waliduje i parsuje powszechny numer ewidencyjny PESEL. Wyodrębnia datę urodzenia, płeć, stulecie, wiek i numer porządkowy bezpośrednio z numeru.

NIP

Waliduje numery identyfikacji podatkowej osób fizycznych i prawnych. Zwraca kod urzędu skarbowego i sformatowaną postać wyświetlaną.

REGON

Obsługuje zarówno 9-cyfrowy REGON podmiotu, jak i 14-cyfrowy REGON jednostki lokalnej — z pełną walidacją sum kontrolnych dla obu wariantów.

KRS

Waliduje numery rejestru sądowego z automatyczną normalizacją zer wiodących. Dokumentuje ograniczenie weryfikacji offline kontra online.

NRB

Waliduje polskie numery rachunków bankowych algorytmem MOD-97. Obsługuje formaty surowy, ze spacjami i IBAN (z prefiksem PL). Zwraca numer rozliczeniowy, kod banku i numer rachunku.

VAT-EU

Waliduje unijne numery VAT polskich podatników (PL + NIP). Usuwa prefiks kraju i stosuje algorytm MOD-11 dla NIP. Zwraca numer NIP i sformatowaną postać wyświetlaną.

IBAN

Waliduje polskie numery IBAN (PL + NRB). Wymaga prefiksu kraju i stosuje MOD-97. Zwraca NRB, numer rozliczeniowy, kod banku i numer rachunku.

Laravel

Gotowe reguły walidacji Laravel dla wszystkich identyfikatorów przez slashlab/numerik-laravel. Obsługuje składnię klasową i łańcuchową z kontrolą trybu ścisłego dla PESEL.

use SlashLab\Numerik\Numerik;
// Proste sprawdzenie boolowskie
Numerik::pesel()->isValid('92060512186'); // true
Numerik::nip()->isValid('5260250274'); // true
// Bogaty wynik ze szczegółami błędu
$result = Numerik::pesel()->validate('92060512185'); // zła cyfra kontrolna
$result->isFailed(); // true
$result->getFirstFailure()->reason; // ValidationFailureReason::InvalidChecksum
// Parsowanie do obiektu wartości
$pesel = Numerik::pesel()->parse('92060512186');
$pesel->getBirthDate()->format('Y-m-d'); // '1992-06-05'
$pesel->getGender(); // Gender::Female
$pesel->getAge(); // obliczony od dzisiaj
$pesel->isAdult(); // true
  • Zero zewnętrznych zależności produkcyjnych — wymaga jedynie php: ^8.3.
  • Niemutowalne obiekty wartości — wszystkie obiekty wartości to klasy readonly.
  • Ścisłe typy wszędziedeclare(strict_types=1) w każdym pliku.
  • Bogate powody błędów — enum ValidationFailureReason obejmuje błędy formatu, sumy kontrolnej, zakodowanej daty i semantyczne.
  • Bez wyrażeń regularnych — walidacja oparta na operacjach tablicowych, co eliminuje podatność na ataki ReDoS.
  • Wczesne odrzucanie nieprawidłowych wejść — ciągi dłuższe niż 32 znaki są od razu odrzucane, bez zbędnych obliczeń.
  • Łatwe do zrozumienia API — intuicyjne metody isValid(), validate() i parse() z jasnymi kontraktami.
If this saved you time → ☕ Buy me a coffee