** * @param string $iban * @return bool */ function isIbanValid( $iban ) { $iban = str_replace( ' ', '', $iban ); // Leerzeichen entfernen $length = strlen( $iban ); // die Länge der Zeichenkette ermitteln if( $length < 15 || $length > 34 ) { return false; } $first = substr( $iban, 0, 4 ); // die ersten 4 Zeichen... $last = substr( $iban, 4 ); $iban = $last . $first; // ...hinten anhängen for( $i=65; $i<=90; $i++ ) // für jeden Buchstaben im Alphabet einen Schleifendurchlauf { $letter = chr( $i ); // Buchstabe vom ASCII-Code ermitteln (65=A) $code = $i - 55; $iban = str_replace( $letter, $code, $iban ); // Buchstabe durch Code ersetzen } $length = strlen( $iban ); // neue Länge des IBAN ermitteln (wurde durch 2stellige Zahlen länger) $mod = 0; for( $i=0; $i<=$length; $i=$i + 9 ) // Hilfsmethode für die Berechnung der Prüfziffer (9er-Blöcke) { if( $mod === 0 ) // im 1. Durchgang 9 Zeichen ziehen { $block = substr( $iban, $i, 9 ); } else if( $mod < 10 ) // bei einstelligem Restwert die nächsten 8 Zeichen ziehen { $block = (string) $mod . substr( $iban, $i, 8 ); $i--; // Position um 1 Zeichen nach vorne verschieben } else // bei zweistelligem Restwert nur noch 7 Zeichen ziehen { $block = (string) $mod . substr( $iban, $i, 7 ); $i=$i - 2; // Position um 2 Zeichen nach vorne verschieben } $mod = $block % 97; // Restwert ermitteln } if( $mod === 1 ) // sofern die Prüfziffer korrekt ist muss der Restwert 1 ergeben { return true; } return false; // wird nur erreicht, wenn Script oben nicht mit 'true' beendet wird }
Mit diesen 65-IBAN-Beispielen zwischen 15 (Norwegen) und 32 (Saint Lucia) Zeichen können Sie den IBAN-Validator überprüfen.
$examples[] = 'AL47 2121 1009 0000 0002 3569 8741'; // 01. Albania $examples[] = 'AD12 0001 2030 2003 5910 0100'; // 02. Andorra $examples[] = 'AT61 1904 3002 3457 3201'; // 03. Austria $examples[] = 'AZ21 NABZ 0000 0000 1370 1000 1944'; // 04. Azerbaijan $examples[] = 'BH67 BMAG 0000 1299 1234 56'; // 05. Bahrain $examples[] = 'BE62 5100 0754 7061'; // 06. Belgium $examples[] = 'BA39 1290 0794 0102 8494'; // 07. Bosnia and Herzegovina $examples[] = 'BG80 BNBG 9661 1020 3456 78'; // 08. Bulgaria $examples[] = 'HR12 1001 0051 8630 0016 0'; // 09. Croatia $examples[] = 'CY17 0020 0128 0000 0012 0052 7600'; // 10. Cyprus $examples[] = 'CZ65 0800 0000 1920 0014 5399'; // 11. Czech Republic $examples[] = 'DK50 0040 0440 1162 43'; // 12. Denmark $examples[] = 'EE38 2200 2210 2014 5685'; // 13. Estonia $examples[] = 'FO97 5432 0388 8999 44'; // 14. Faroe Islands $examples[] = 'FI21 1234 5600 0007 85'; // 15. Finland $examples[] = 'FR14 2004 1010 0505 0001 3M02 606'; // 16. France $examples[] = 'GE29 NB00 0000 0101 9049 17'; // 17. Georgia $examples[] = 'DE89 3704 0044 0532 0130 00'; // 18. Germany $examples[] = 'GI75 NWBK 0000 0000 7099 453'; // 19. Gibraltar $examples[] = 'GR16 0110 1250 0000 0001 2300 695'; // 20. Greece $examples[] = 'GL56 0444 9876 5432 10'; // 21. Greenland $examples[] = 'HU42 1177 3016 1111 1018 0000 0000'; // 22. Hungary $examples[] = 'IS14 0159 2600 7654 5510 7303 39'; // 23. Iceland $examples[] = 'IE29 AIBK 9311 5212 3456 78'; // 24. Ireland $examples[] = 'IL62 0108 0000 0009 9999 999'; // 25. Israel $examples[] = 'IT40 S054 2811 1010 0000 0123 456'; // 26. Italy $examples[] = 'JO94 CBJO 0010 0000 0000 0131 0003 02'; // 27. Jordan $examples[] = 'KW81 CBKU 0000 0000 0000 1234 5601 01'; // 28. Kuwait $examples[] = 'LV80 BANK 0000 4351 9500 1'; // 29. Latvia $examples[] = 'LB62 0999 0000 0001 0019 0122 9114'; // 30. Lebanon $examples[] = 'LI21 0881 0000 2324 013A A'; // 31. Liechtenstein $examples[] = 'LT12 1000 0111 0100 1000'; // 32. Lithuania $examples[] = 'LU28 0019 4006 4475 0000'; // 33. Luxembourg $examples[] = 'MK072 5012 0000 0589 84'; // 34. Macedonia $examples[] = 'MT84 MALT 0110 0001 2345 MTLC AST0 01S'; // 35. Malta $examples[] = 'MU17 BOMM 0101 1010 3030 0200 000M UR'; // 36. Mauritius $examples[] = 'MD24 AG00 0225 1000 1310 4168'; // 37. Moldova $examples[] = 'MC93 2005 2222 1001 1223 3M44 555'; // 38. Monaco $examples[] = 'ME25 5050 0001 2345 6789 51'; // 39. Montenegro $examples[] = 'NL39 RABO 0300 0652 64'; // 40. Netherlands $examples[] = 'NO93 8601 1117 947'; // 41. Norway $examples[] = 'PK36 SCBL 0000 0011 2345 6702'; // 42. Pakistan $examples[] = 'PL60 1020 1026 0000 0422 7020 1111'; // 43. Poland $examples[] = 'PT50 0002 0123 1234 5678 9015 4'; // 44. Portugal $examples[] = 'QA58 DOHB 0000 1234 5678 90AB CDEF G'; // 45. Qatar $examples[] = 'RO49 AAAA 1B31 0075 9384 0000'; // 46. Romania $examples[] = 'LC55 HEMM 0001 0001 0012 0012 0002 3015';// 47. Saint Lucia $examples[] = 'SM86 U032 2509 8000 0000 0270 100'; // 48. San Marino $examples[] = 'SA03 8000 0000 6080 1016 7519'; // 49. Saudi Arabia $examples[] = 'CH02 0020 7207 1011 7540 C'; // 50. Schweiz $examples[] = 'RS35 2600 0560 1001 6113 79'; // 51. Serbia $examples[] = 'SK31 1200 0000 1987 4263 7541'; // 52. Slovak Republic $examples[] = 'SI56 1910 0000 0123 438'; // 53. Slovenia $examples[] = 'ES80 2310 0001 1800 0001 2345'; // 54. Spain $examples[] = 'SE35 5000 0000 0549 1000 0003'; // 55. Sweden $examples[] = 'CH93 0076 2011 6238 5295 7'; // 56. Switzerland $examples[] = 'TN59 1000 6035 1835 9847 8831'; // 57. Tunisia $examples[] = 'TR33 0006 1005 1978 6457 8413 26'; // 58. Turkey $examples[] = 'TN59 0102 6067 1119 9976 6058'; // 59. Tunesien $examples[] = 'AE07 0331 2345 6789 0123 456'; // 60. UAE $examples[] = 'UA12 3052 9900 0414 9497 8039 8279 4'; // 61. Ukraine $examples[] = 'HU02 1160 0006 0000 0000 6424 7067'; // 62. Ungarn $examples[] = 'GB29 NWBK 6016 1331 9268 19'; // 63. United Kingdom $examples[] = 'BY86 AKBB 1010 0000 0029 6600 0000'; // 64. Weissrussland $examples[] = 'CY02 0020 0195 0000 3570 0982 2416'; // 65. Zypern $success = 0; foreach( $examples as $iban ) { if( isIbanValid( $iban ) ) { $success++; } } echo 'Anzahl der korrekten IBANs:' . $success;