Cytat
Weryfikacja składa się z następujących kroków:
krok wstępny : usuń niealfanumeryczne znaki - np. spacje, myślniki itd.
krok 1 : przesuń 4 pierwsze znaki na koniec,
krok 2 : zamień litery na dwucyfrowe liczby; A=10, B=11, ... Y=34, Z=35
krok 3 : podziel całkowicie liczbę z kroku 2 przez 97,
krok 4 : jeśli reszta z dzielenia wyniosła 1 to numer jest prawidłowy.
krok wstępny : usuń niealfanumeryczne znaki - np. spacje, myślniki itd.
krok 1 : przesuń 4 pierwsze znaki na koniec,
krok 2 : zamień litery na dwucyfrowe liczby; A=10, B=11, ... Y=34, Z=35
krok 3 : podziel całkowicie liczbę z kroku 2 przez 97,
krok 4 : jeśli reszta z dzielenia wyniosła 1 to numer jest prawidłowy.
Jako, że nie znalazłem, to sam napisałem, ale mam prośbę do bardziej doświadczonych o optymalizację.
Funkcja na wejściu przyjmuje numer jako string, zwraca true jeśli numer prawidłowy, false jeśli nie.
Proszę różnież o przetestowanie (czy dziala)
<?php function sprawdz_nr_konta($numer) { //(c) Bartłomiej Zastawnik, "Rzast". //Użycie funkcji dozwolone przy zachowaniu komentarzy. if (($temp{0}<='9')&&($temp{1}<='9')){//Jeżeli na początku są cyfry, to dopisujemy PL $temp ='PL'.$temp; } '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 $ciag=''; for ($i=0;$i<$ilosc;$i++){ $ciag.=$znaki[$temp{$i}]; } $mod = 0; for($i=0;$i<$ilosc;$i=$i+6) { //oblicznie modulo, $ciag jest zbyt wielką liczbą na format integer, więc dzielę g
o na kawałki } $out=($mod==1)?true:false; return $out; } ?>