Guest User

kukkis

a guest
Oct 9th, 2008
844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.20 KB | None | 0 0
  1. /**
  2.  * Laskee viitenumerolle tarkisteen
  3.  * @param int|string $viite Viitenumero
  4.  * @return int Suomen pankkien k�ytt�m� viitenumeron tarkiste
  5.  */
  6. function laskeTarkiste($viite)
  7. {
  8.   $kertoimet = array(7,3,1);
  9.   $pituus = strlen($viite);
  10.   $viite = str_split($viite);
  11.   $summa = 0;
  12.   for ($i = $pituus - 1; $i >= 0; --$i) {
  13.     $summa += $viite[$i] * $kertoimet[($pituus - 1 - $i) % 3];
  14.   }
  15.   return (10 - $summa % 10) % 10;
  16. }
  17.  
  18. /**
  19.  * Muodostaa Suomalaisen pankkisysteemin mukaisen viitteen
  20.  * @param int $luku jokin j�rjestelm�lle uniikki luku. Ks. kommentit
  21.  * @return string Viitenumero tarkisteineen viiden jaksoihin ryhmiteltyn�.
  22.  */
  23. function haeViite($luku)
  24. {
  25. /* Pyrit��n v�ltt�m��n liian lyhyet viitenumerot. Saattaapi aiheuttaa
  26.    p��llekk�isyyksi� jos j�rjestelm�ss� on jo paljon varattuja viitteit� alueella
  27.    ($luku + 100) * 10, joten p��llekk�isyydentarkistus voi olla aiheellinen
  28.    siin� tapauksessa. Parasta olisi tietysti tuoda funktiolle jokin uniikki luku
  29.    > 100 ja poistaa allaoleva rivi*/
  30.   $luku += 100;
  31.   // Lis�t��n tarkiste ja ryhmitell��n kivasti
  32.   $tulos = '';
  33.   foreach (str_split($luku . laskeTarkiste($luku), 5) as $osa) $tulos .= $osa . ' ';
  34.   return $tulos;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment