Advertisement
vencinachev

IBAN - ibanchecker.php - v2

Mar 31st, 2021
737
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.53 KB | None | 0 0
  1. <?php
  2. function ibanCheck($iban){
  3.     /*if (strlen($iban) != 22){
  4.         return false;
  5.     }
  6.    
  7.     if ($iban[0] != 'B' || $iban[1] != 'G'){
  8.         return false;
  9.     }*/
  10.     $len = array("BG"=>22, "DK"=>18, "AT"=>20);
  11.  
  12.     $patternIBAN = "/^[0-9A-Z]+$/";
  13.     if (!preg_match($patternIBAN, $iban)){
  14.         return false;
  15.     }
  16.    
  17.    
  18.     $countryCode =  $iban[0].$iban[1];
  19.     if (!array_key_exists($countryCode, $len)){
  20.         return false;
  21.     }
  22.    
  23.     if (strlen($iban) != $len[$countryCode]){
  24.         return false;
  25.     }
  26.    
  27.     $str = substr($iban, 4) . substr($iban, 0, 4);
  28.     $num = "";
  29.     for ($i = 0; $i < strlen($str); $i++){
  30.         if (is_numeric($str[$i])) {
  31.             $num = $num . $str[$i];
  32.         } else {
  33.             $n = ord($str[$i]) - ord('A') + 10;
  34.             $num = $num . $n;
  35.         }
  36.     }
  37.    
  38.     if(mod($num, 97) != 1){
  39.         return false;
  40.     }
  41.    
  42.    
  43.     $str = substr($iban, 4) . substr($iban, 0, 4);
  44.     $str[strlen($str) - 1] = $str[strlen($str) - 2] = '0';
  45.     $num = "";
  46.     for ($i = 0; $i < strlen($str); $i++){
  47.         if (is_numeric($str[$i])) {
  48.             $num = $num . $str[$i];
  49.         } else {
  50.             $n = ord($str[$i]) - ord('A') + 10;
  51.             $num = $num . $n;
  52.         }
  53.     }
  54.     $controlNumberCalculated = 98 - mod($num, 97);
  55.     $controlNumberReal = intval($iban['2'].$iban['3']); //substr($iban, 2, 2)
  56.    
  57.     if ($controlNumberCalculated !=  $controlNumberReal){
  58.         return false;
  59.     }      
  60.    
  61.     return true;
  62. }
  63.  
  64.  
  65. function mod($num, $a) {
  66.     // Initialize result
  67.     $res = 0;
  68.     // One by one process
  69.     // all digits of 'num'
  70.     for ($i = 0; $i < strlen($num); $i++){
  71.         $res = ($res * 10 + $num[$i] - '0') % $a;
  72.     }
  73.  
  74.     return $res;
  75. }
  76. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement