Polski IBAN to dwuliterowy prefiks PL połączony z 26-cyfrowym numerem NRB, walidowany sumą kontrolną MOD-97. Użyj Numerik::nrb() dla samego numeru bez prefiksu, Numerik::iban() dla pełnej formy międzynarodowej.
use SlashLab \ Numerik \ Numerik ;
Numerik :: iban () -> isValid ( ' PL61102010260000000000000000 ' ); // true
// Format ze spacjami i małe litery w prefiksie są akceptowane
Numerik :: iban () -> isValid ( ' PL61 1020 1026 0000 0000 0000 0000 ' ); // true
Numerik :: iban () -> isValid ( ' pl61102010260000000000000000 ' ); // true
// Samo NRB bez prefiksu jest odrzucane — użyj Numerik::nrb()
Numerik :: iban () -> isValid ( ' 61102010260000000000000000 ' ); // false
$ result = Numerik :: iban () -> validate ( ' PL61102010260000000000000000 ' );
$ result -> isValid ; // true
// Parsowanie do obiektu z danymi
$ iban = Numerik :: iban () -> parse ( ' PL61102010260000000000000000 ' );
// null zamiast wyjątku w przypadku błędu
$ iban = Numerik :: iban () -> tryParse ( ' błędny-numer ' ); // null
parse() i tryParse() zwracają instancję SlashLab\Numerik\ValueObjects\Iban.
Metoda
Typ zwracany
Opis
getRaw()
string
Oryginalne wejście bez zmian.
getNormalized()
string
PL + 26 cyfr, np. PL61102010260000000000000000.
__toString()
string
Identyczne z getNormalized().
Metoda
Typ zwracany
Opis
getFormatted()
string
Standardowy format grupowany: PL61 1020 1026 0000 0000 0000 0000.
Metoda
Typ zwracany
Opis
getCountryCode()
string
Zawsze PL.
getNrb()
string
26-cyfrowy NRB bez prefiksu kraju.
getCheckDigits()
string
Dwie cyfry kontrolne MOD-97 (pozycje 3–4 numeru IBAN).
getSortCode()
string
8-cyfrowy numer rozliczeniowy banku.
getBankCode()
string
Pierwsze 3 cyfry numeru rozliczeniowego — identyfikator banku.
getAccountNumber()
string
Ostatnie 16 cyfr — numer rachunku klienta.
$ iban = Numerik :: iban () -> parse ( ' PL61102010260000000000000000 ' );
$ iban -> getRaw (); // 'PL61102010260000000000000000'
$ iban -> getNormalized (); // 'PL61102010260000000000000000'
$ iban -> getFormatted (); // 'PL61 1020 1026 0000 0000 0000 0000'
$ iban -> getCountryCode (); // 'PL'
$ iban -> getNrb (); // '61102010260000000000000000'
$ iban -> getCheckDigits (); // '61'
$ iban -> getSortCode (); // '10201026'
$ iban -> getBankCode (); // '102'
$ iban -> getAccountNumber (); // '0000000000000000'
// Formaty ze spacjami i małymi literami normalizują się do tej samej wartości
$ a = Numerik :: iban () -> parse ( ' PL61102010260000000000000000 ' );
$ b = Numerik :: iban () -> parse ( ' PL61 1020 1026 0000 0000 0000 0000 ' );
$ c = Numerik :: iban () -> parse ( ' pl61102010260000000000000000 ' );
$ a -> getNormalized () === $ b -> getNormalized (); // true
$ b -> getNormalized () === $ c -> getNormalized (); // true
Usuń spacje i myślniki. Odrzuć wejścia dłuższe niż 40 znaków.
Wymagaj, aby pierwsze dwa znaki były PL (bez rozróżniania wielkości liter) — inaczej błąd InvalidFormat.
Usuń prefiks. Wymagaj dokładnie 26 cyfr — inaczej błąd InvalidLength.
Zastosuj sumę kontrolną NRB MOD-97 — patrz sekcja Algorytmy .
Powód
Wartość
Warunek
InvalidLength
invalid_length
Część NRB nie ma dokładnie 26 cyfr lub surowe wejście przekracza 40 znaków.
InvalidFormat
invalid_format
Brak prefiksu PL.
InvalidCharacters
invalid_characters
Część NRB (po usunięciu spacji i myślników) zawiera znaki niebędące cyframi.
InvalidChecksum
invalid_checksum
Reszta z MOD-97 nie wynosi 1.