Home » IBAN-Prüfung mit PHP

IBAN-Prüfung mit PHP

Geschrieben in PHP,Webentwicklung von Michael am 5 Oktober 2007

Die internationale Kontonummer IBAN wird immer öfter auch ein Thema für Programmierer. Erst einmal wird sie im erleichterten europäischen Zahlungsverkehr immer häufiger genutzt, und dann kann man die IBAN per Software gut nach verschiedene Kriterien geprüften.

  • 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.

4 Kommentare to 'IBAN-Prüfung mit PHP'

Kommentare abonnieren per RSS or TrackBack to 'IBAN-Prüfung mit PHP'.

  1. m.s. aus f. said,

    on Juli 1st, 2008 at 09:12

    super funktion :)


  2. 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. [...]

  3. def said,

    on August 8th, 2009 at 17:37

    Super!
    Hat auf Anhieb funktioniert.

  4. Matthias said,

    on Januar 19th, 2012 at 11:21

    Einfach Klasse!

    Danke für Deinen Einsatz.

    VG

Kommentieren

XHTML: Du kannst folgende Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>