Advertisement
vencinachev

IBAN Check

Mar 30th, 2021
1,326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.18 KB | None | 0 0
  1. <?php
  2. function isValidIBAN($iban){
  3.     if (strlen($iban) != 22){
  4.         return false;
  5.     }
  6.    
  7.     $str = substr($iban, 4) . substr($iban, 0, 4);
  8.    
  9.     $num = "";
  10.     for($i = 0; $i < strlen($str); $i++){
  11.         if (is_numeric($str[$i])){
  12.             $num = $num . $str[$i];
  13.         } else {
  14.             $n = ord($str[$i]) - ord('A') + 10;
  15.             $num = $num . $n;
  16.         }
  17.     }
  18.     if (mod($num, 97) != 1){
  19.         return false;
  20.     }
  21.    
  22.     $str[20] = '0';
  23.     $str[21] = '0';
  24.     $num = "";
  25.     for($i = 0; $i < strlen($str); $i++){
  26.         if (is_numeric($str[$i])){
  27.             $num = $num . $str[$i];
  28.         } else {
  29.             $n = ord($str[$i]) - ord('A') + 10;
  30.             $num = $num . $n;
  31.         }
  32.     }
  33.    
  34.     $controlCalulated = 98 - mod($num, 97);
  35.     $control = intval($iban[2].$iban[3]);
  36.    
  37.     if ($control != $controlCalulated){
  38.         return false;
  39.     }
  40.    
  41.     return true;
  42. }
  43.  
  44. function mod($num, $a) {
  45.     // Initialize result
  46.    $res = 0;
  47.     // One by one process
  48.     // all digits of 'num'
  49.     for ($i = 0; $i < strlen($num); $i++){
  50.         $res = ($res * 10 + $num[$i] - '0') % $a;
  51.     }
  52.     return $res;
  53. }
  54. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement