1
0
This repository has been archived on 2017-06-06. You can view files and clone it, but cannot push or open issues or pull requests.
informaticaD4P-2017/src/Application/Helper/IBAN.php

96 lines
2.5 KiB
PHP
Raw Normal View History

<?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 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 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 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 = $this->wordToNumbers($identificatie);
return $controle == $this->getCheckDigits($nummer);
}
public function getRekeningNummer($iban)
{
return substr(str_replace(" ", "", $iban), 8);
}
public function getBank($iban)
{
return substr(str_replace(" ", "", $iban), 4, 4);
}
public function getLand($iban)
{
return substr(str_replace(" ", "", $iban), 0, 2);
}
public function getIBAN($rekeningnr)
{
$landcode = "NL"; // NL in vertaling
$landnumber = $this->wordToNumbers($landcode);
$bankcode = "INFO";
$banknumber = $this->wordToNumbers($bankcode);
$rekeningnr = str_pad($rekeningnr, 10, 0, STR_PAD_LEFT);
$bignum = $banknumber . $rekeningnr . $landnumber . "00";
$checkdigits = $this->getCheckDigits($bignum);
$rekeningnrarr = str_split($rekeningnr, 4);
return $landcode.$checkdigits." ".$bankcode." ".$rekeningnrarr[0]." ".$rekeningnrarr[1]." ".$rekeningnrarr[2];
}
}