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 wartości
$ iban = Numerik :: iban () -> parse ( ' PL61102010260000000000000000 ' );
// null zamiast wyjątku w przypadku błędu
$ iban = Numerik :: iban () -> tryParse ( ' błędne-wejście ' ); // null
parse() i tryParse() zwracają instancję SlashLab\Numerik\ValueObjects\Iban.
Metoda Typ zwracany Opis getRaw()stringOryginalne wejście bez zmian. getNormalized()stringPL + 26 cyfr, np. PL61102010260000000000000000.__toString()stringIdentyczne z getNormalized().
Metoda Typ zwracany Opis getFormatted()stringStandardowy format grupowany: PL61 1020 1026 0000 0000 0000 0000.
Metoda Typ zwracany Opis getCountryCode()stringZawsze PL. getNrb()string26-cyfrowy NRB bez prefiksu kraju. getCheckDigits()stringDwie cyfry kontrolne MOD-97 (pozycje 3–4 numeru IBAN). getSortCode()string8-cyfrowy numer rozliczeniowy banku. getBankCode()stringPierwsze 3 cyfry numeru rozliczeniowego — identyfikator banku. getAccountNumber()stringOstatnie 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 .
Przyczyna Wartość Kiedy InvalidLengthinvalid_lengthCzęść NRB nie ma dokładnie 26 cyfr lub surowe wejście przekracza 40 znaków. InvalidFormatinvalid_formatBrak prefiksu PL. InvalidCharactersinvalid_charactersCzęść NRB (po usunięciu spacji i myślników) zawiera znaki niebędące cyframi. InvalidChecksuminvalid_checksumReszta z MOD-97 nie wynosi 1.