Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:checkiban

Dies ist eine alte Version des Dokuments!


IBAN mit PHP Validieren

**
* @param string $iban
* @return bool
*/
function isIbanValid( $iban )
{
    $pattern    = '/\s|\-|\/|#/'; // alle nicht alphanumerischen Zeichen herausfiltern
    $iban       = preg_replace( $pattern, '', $iban ); // und 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
}
php/checkiban.1494584450.txt.gz · Zuletzt geändert: 2017/05/12 00:00 (Externe Bearbeitung)