====== IBAN mit PHP Validieren ======
**
* @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
}
====== Validator überprüfen ======
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;