Walidacja numeru IBAN

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Walidacja numeru IBAN

Porady: Jak przeprowadzić walidację poprawności Międzynarodowego numeru rachunku (konta) bankowego zwanym dalej "IBAN", wykorzystywanym, gdy rachunek bankowy jest używany w rozliczeniach transgranicznych.

IBAN składa się z czterech członów i zawiera 28 znaków, z których:

  • dwa pierwsze znaki stanowią 2-literowy kod Polski "PL",
  • dwa następne znaki stanowią 2-cyfrową liczbę kontrolną,
  • osiem kolejnych znaków stanowi 8-cyfrowy numer jednostki organizacyjnej banku prowadzącej rachunek bankowy,
  • szesnaście ostatnich znaków stanowi 16-cyfrowy numer porządkowy rachunku w jednostce organizacyjnej banku prowadzącej rachunek bankowy.

( http://www.finanse.ae.katowice.pl/tzielinski/bankowosc/pliki/07_CZYNNOSCI%20PASYWNE%20-%20RACHUNKI%20BANKOWE.doc )
Walidacja numeru NRB

Kod

<?php
function sprawdz_nr_konta($numer) {
//(c) Bartłomiej Zastawnik, "Rzast".
//Użycie funkcji dozwolone przy zachowaniu komentarzy.
  $puste = array(' ', '-', '_', '.', ',','/', '|');//znaki do usuniącia
  $temp = strtoupper(str_replace($puste, '', $numer));//Zostają cyferki + duże litery
  if (($temp{0}<='9')&&($temp{1}<='9')){//Jeżeli na początku są cyfry, to dopisujemy PL, inne kraje muszć być jawnie wprowadzone
    $temp ='PL'.$temp;
  }
  $temp=substr($temp,4).substr($temp, 0, 4);//przesuwanie cyfr kontrolnych na koniec
  $znaki=array('0'=>'0','1'=>'1','2'=>'2','3'=>'3','4'=>'4',
                         '5'=>'5','6'=>'6','7'=>'7','8'=>'8','9'=>'9',
          'A'=>'10','B'=>'11','C'=>'12','D'=>'13','E'=>'14','F'=>'15',
                    'G'=>'16','H'=>'17','I'=>'18','J'=>'19','K'=>'20',
                    'L'=>'21','M'=>'22','N'=>'23','O'=>'24','P'=>'25',
                    'Q'=>'26','R'=>'27','S'=>'28','T'=>'29','U'=>'30',
                    'V'=>'31','W'=>'32','X'=>'33','Y'=>'34','Z'=>'35');//Tablica zamienników, potrzebnych do wyliczenia sumy kontrolnej
  $ilosc=strlen($temp);//długość numeru
  $ciag='';
  for ($i=0;$i<$ilosc;$i++){
    $ciag.=$znaki[$temp{$i}];
  }
    $mod = 0;
  $ilosc=strlen($ciag);//nowa długość numeru
    for($i=0;$i<$ilosc;$i=$i+6) {
//oblicznie modulo, $ciag jest zbyt wielkć liczbę na format integer, wiąc dzielć go na kawaśki
        $mod = (int)($mod.substr($ciag, $i, 6)) % 97; 
    }
 $out=($mod==1)?true:false;
return $out;
}


Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.

Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo