96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  *  Informatica Eindproject D4p
 | |
|  *  6in3, Stedelijk Gymnasium Nijmegen
 | |
|  *  Docent: Hans de Wolf
 | |
|  *
 | |
|  *  ==================
 | |
|  *
 | |
|  *  Daniel Boutros,
 | |
|  *  Christiaan Goossens,
 | |
|  *  Jelmer Hinssen
 | |
|  */
 | |
| 
 | |
| namespace Inforbank\Application\Helper;
 | |
| 
 | |
| class IBAN
 | |
| {
 | |
|     private static function wordToNumbers($word)
 | |
|     {
 | |
|         $newword = "";
 | |
|         $wordarray = str_split($word);
 | |
|         foreach ($wordarray as $v) {
 | |
|             if (ctype_alpha($v)) {
 | |
|                 $newword .= ord(strtolower($v)) - 87;
 | |
|             } else {
 | |
|                 $newword .= $v;
 | |
|             }
 | |
|         }
 | |
|         return $newword;
 | |
|     }
 | |
| 
 | |
|     private static function getCheckDigits($bignum)
 | |
|     {
 | |
|         //Modulo staartdeling
 | |
|         $modulo97 = (int)substr($bignum, 0, 6);
 | |
|         $modulo97 = $modulo97 % 97;
 | |
|         $modulo97 = (1000000 * $modulo97) + (int)substr($bignum, 6, 6);
 | |
|         $modulo97 = $modulo97 % 97;
 | |
|         $modulo97 = (1000000 * $modulo97) + (int)substr($bignum, 12, 6);
 | |
|         $modulo97 = $modulo97 % 97;
 | |
|         $modulo97 = (1000000 * $modulo97) + (int)substr($bignum, 18, 6);
 | |
|         $modulo97 = $modulo97 % 97;
 | |
|         $checkdigits = 98 - $modulo97;
 | |
|         if (strlen($checkdigits) < 2) {
 | |
|             $checkdigits = '0' . $checkdigits;
 | |
|         }
 | |
|         return $checkdigits;
 | |
|     }
 | |
| 
 | |
|     public static function isValidIBAN($iban)
 | |
|     {
 | |
|         $iban = str_replace(" ", "", $iban);
 | |
|         $landcode = substr($iban, 0, 2);
 | |
|         $controle = substr($iban, 2, 2);
 | |
|         $identificatie = substr($iban, 4);
 | |
|         $identificatie .= $landcode;
 | |
|         $identificatie .= "00";
 | |
|         $nummer = self::wordToNumbers($identificatie);
 | |
|         return $controle == self::getCheckDigits($nummer);
 | |
|     }
 | |
| 
 | |
|     public static function getRekeningNummer($iban)
 | |
|     {
 | |
|         return substr(str_replace(" ", "", $iban), 8);
 | |
|     }
 | |
| 
 | |
|     public static function getBank($iban)
 | |
|     {
 | |
|         return substr(str_replace(" ", "", $iban), 4, 4);
 | |
|     }
 | |
| 
 | |
|     public static function getLand($iban)
 | |
|     {
 | |
|         return substr(str_replace(" ", "", $iban), 0, 2);
 | |
|     }
 | |
| 
 | |
|     public static function getIBAN($rekeningnr)
 | |
|     {
 | |
|         $landcode = "NL"; // NL in vertaling
 | |
|         $landnumber = self::wordToNumbers($landcode);
 | |
| 
 | |
| 
 | |
|         $bankcode = "INFO";
 | |
|         $banknumber = self::wordToNumbers($bankcode);
 | |
| 
 | |
|         $rekeningnr = str_pad($rekeningnr, 10, 0, STR_PAD_LEFT);
 | |
| 
 | |
|         $bignum = $banknumber . $rekeningnr . $landnumber . "00";
 | |
|         $checkdigits = self::getCheckDigits($bignum);
 | |
| 
 | |
|         $rekeningnrarr = str_split($rekeningnr, 4);
 | |
|         return $landcode.$checkdigits." ".$bankcode." ".$rekeningnrarr[0]." ".$rekeningnrarr[1]." ".$rekeningnrarr[2];
 | |
|     }
 | |
| }
 |