IBAN-Prüfung mit PHP
- Sie darf (ohne Leerzeichen) nicht länger als 36 Zeichen sein.
- In jedem europäischen Land hat sie eine feste Länge (in Deutschland 22 Zeichen). Ein Liste der Länge und der Aufteilung in Bankleitzahl und Kontonummer steht hier bei Wikipedia
- Die zweite und dritte Stelle der IBAN ist eine errechnete Prüfsumme, die per Software errechnet oder geprüft werden kann.
Ich zeige hier, wie die Berechnung und Prüfung in einem PHP-Programm durchgeführt werden kann. Das Ganze ist deswegen etwas spannend, weil eine Modulo-Rechnung, also eine Ganzzahl-Division mit einer bis zu 38-stelligen Ganzzahl durchgeführt werden muss. Wegen der meist nur zur Verfügung stehenden 32-Bit-CPUs können mit PHP aber nur maximal 9 Stellen mit allen Ziffern genutzt werden. Deshalb muss die Modulo-Rechnung in mehere Teilschritte zerlegt werden.
function test_iban( $iban ) {
$iban = str_replace( ' ', '', $iban );
$iban1 = substr( $iban,4 )
. strval( ord( $iban{0} )-55 )
. strval( ord( $iban{1} )-55 )
. substr( $iban, 2, 2 );
$rest=0;
for ( $pos=0; $pos<strlen($iban1); $pos+=7 ) {
$part = strval($rest) . substr($iban1,$pos,7);
$rest = intval($part) % 97;
}
$pz = sprintf("%02d", 98-$rest);
if ( substr($iban,2,2)=='00')
return substr_replace( $iban, $pz, 2, 2 );
else
return ($rest==1) ? true : false;
}
Diese PHP-Funktion ergänzt die richtige Prüfziffer, wenn beim Aufruf der Funktion eine IBAN mit Prüfziffern “00″ übergeben wird. Wird dagegen eine vollständige IBAN mit Prüfziffer übergeben, gibt es als Rückgabe “true” wenn die Prüfziffer zu der IBAN passt, andernfalls gibt es das Ergebnis “false”.
Diese Berechnung bezieht sich übrigens nur auf die einheitlichen IBAN-Prüfziffern an der dritten und vierten Stelle der IBAN. In manchen Ländern werden weiter hinten auch noch Prüfziffern zu den eigentlichen Kontonummern hinzugefügt. Diese müssen vor der Berechnung mit der hier gezeigten Funktion schon bekannt sein. Das Wissen um diese weiteren Prüfziffern ist eher nur von Bedeutung, wenn man aus einer IBAN die nationalen Bankdaten ableiten möchte. Wer es ganz genau wissen möchte, findet auf dieser Webseite die Informationen, wo die zusätzlichen Prüfziffern stehen, und dort gibt es auch Links zu Dokumenten der jeweiligen nationalen IBAN-Regeln.
on Juli 1st, 2008 at 09:12
super funktion :)
on September 8th, 2008 at 17:54
[...] IBAN-Prüfung und Berechnung mit PHP – Danke Michael Schummel! Übrigens noch interessant, wie so eine IBAN-Nummer aufgebaut ist. [...]
on August 8th, 2009 at 17:37
Super!
Hat auf Anhieb funktioniert.
on Januar 19th, 2012 at 11:21
Einfach Klasse!
Danke für Deinen Einsatz.
VG