php-iban
ist eine Bibliothek zum Parsen, Validieren und Generieren von IBAN- (und IIBAN-)Bankkontoinformationen in PHP.
Alle Teile einer IBAN können abgerufen werden, einschließlich Ländercode, Prüfsumme, BBAN, Finanzinstituts- oder Bankleitzahl, Kontonummer und, wenn ein nationales System mit fester Länge verwendet wird, auch Filial-/Bankleitzahl. Sofern verfügbar, können auch alte nationale Prüfsummen abgerufen, validiert und korrekt eingestellt werden, unabhängig davon, ob sie sich auf den Kontonummernteil, Bank- und Filialkennungen, Teile davon oder alle der oben genannten beziehen. IBAN-Ländercodes können in die Formate ISO3166-1 Alpha-2 und IANA konvertiert werden. Das übergeordnete IBAN-Land, das als Registrar für abhängige Gebiete fungiert, kann abgefragt werden, die offizielle Landeswährung (ISO4217-Alpha-Codeformat), der Name der Zentralbank und die URL der Zentralbank kann auch abgefragt werden, um die Integration zu erleichtern. IBANs können zwischen menschlicher und maschineller Darstellung umgewandelt werden. In besonderen Fällen, etwa zur relativen Identifizierung, können IBANs für die Präsentation vor Menschen verschleiert werden. Eine Datenbank mit Beispiel-/Test-IBANs aus verschiedenen Ländern ist enthalten. Schließlich können sehr genaue Vorschläge für die ursprünglich vorgesehene Eingabe gemacht werden, wenn eine falsche IBAN erkannt wird, die auf einen Übertragungsfehler zurückzuführen ist.
Der Parser wurde mithilfe regulärer Ausdrücke erstellt, um den Inhalt des offiziellen IBAN-Registers von SWIFT anzupassen und dann manuell für Sonderfälle wie Fehler und Auslassungen in den offiziellen Spezifikationen von SWIFT zu ändern.
Verschiedene Mängel der ursprünglichen Anpassung wurden mittlerweile behoben und die aktuelle Version dürfte eine einigermaßen korrekte und zuverlässige Umsetzung darstellen.
Gegebenenfalls wurden auch Empfehlungen des Europäischen Komitees für Bankenstandards (ECBS) berücksichtigt.
Bitte bedenken Sie, dass sich die Spezifikation häufig ändert und daher möglicherweise nicht 100 % aktuell ist, wenn kürzlich eine neue Version veröffentlicht wurde – ich gebe jedoch mein Bestes. Wir gehen derzeit davon aus, dass wir mit der Veröffentlichung vom Januar 2020 auf dem neuesten Stand sind, d. h. PDF-Veröffentlichung Nr. 86.
Es ist unter LGPL lizenziert und kann in kommerziellen Umgebungen kostenlos verwendet werden.
Die folgenden 116 offiziellen und inoffiziellen IBAN-Länder werden unterstützt.
Wenn Sie Composer verwenden, können Sie einfach composer require globalcitizen/php-iban
ausführen, um loszulegen. Berichten zufolge (und ) wurden sie vom Komponisten erstellt.
(Wenn Sie composer
noch nicht haben und es auf unsichere Weise installieren möchten (nicht empfohlen, aber praktisch), können Sie curl -sS https://getcomposer.org/installer | php
oder wget -O- https://getcomposer.org/installer | php
ausführen. wget -O- https://getcomposer.org/installer | php
.
Fügen Sie dann einfach Folgendes zu Ihrer composer.json
Datei hinzu:
// composer.json
{
"require" : {
"globalcitizen/php-iban" : "4.2.3"
}
}
Anschließend können Sie die neuen Abhängigkeiten installieren, indem Sie den Update-Befehl von composer
in dem Verzeichnis ausführen, in dem sich Ihre composer.json
Datei befindet:
# install
$ php composer.phar install
# update
$ php composer.phar update globalcitizen/php-iban
# or you can simply execute composer command if you set it to
# your PATH environment variable
$ composer install
$ composer update globalcitizen/php-iban
Sie können diese Bibliothek auf Packagist sehen.
Verwenden Sie für eine reguläre Installation den Befehl git clone
:
# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone [email protected]:globalcitizen/php-iban.git
Alternativ können Sie die php-iban
Bibliothek in Ihr eigenes, git
verwaltetes Repository mit einer bestimmten Revisionsnummer einbetten, sodass es möglich ist, die Version auf vorhersehbare Weise zu aktualisieren und gleichzeitig ein größeres System aufrechtzuerhalten, das von seiner Funktionalität abhängt:
# enter your project's git repo
$ cd my-existing-project-with-a-git-repo/
# select an appropriate place to create the php-iban subdir
$ cd lib/
# add php-iban as a submodule
$ git submodule add https://github.com/globalcitizen/php-iban.git
# commit new submodule
$ git commit -m ' Add php-iban submodule '
Wenn Sie dann zum ersten Mal git
Projekte mit Submodulen ausprobieren, müssen Sie normalerweise ein paar zusätzliche Schritte ausführen:
# check out your project as normal
$ git clone [email protected]:your/project.git
# initialize submodules
$ git submodule init
# update submodules
$ git submodule update
Um diese Schritte zu überspringen, fügen Sie beim Auschecken das Argument --recursive
zu git clone
hinzu:
# check out your project, initialize and update all submodules
$ git clone --recursive [email protected]:your/project.git
Wenn Sie später möchten, dass Ihr Projekt eine neuere Version von php-iban
verwendet, führen Sie Folgendes aus:
# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m ' Update php-iban submodule '
zip
oder tar.gz
Format.unzip filename.zip
auf Unix-ähnlichen Plattformen.php-iban
aus dem Unterverzeichnis libraries/php-iban
des übergeordneten Verzeichnisses einbinden möchten, können Sie die folgende require_once()-Anweisung verwenden: <?php
require_once ( dirname ( __FILE__ ) . ' /../libraries/php-iban/php-iban.php ' );
# ... your code utilizing php-iban
?>
Die folgende Tabelle vergleicht php-iban mit anderen PHP-Projekten, die IBAN-bezogene Funktionalität bieten, auf der Grundlage allgemeiner Projektinformationen und der unterstützten Programmierparadigmen.
Projekt | Lizenz. | Proz | OO | Begann | Letzte | Stern | Betrachten | Gabel | Installiert | Heimatkultur | Abt |
---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | LGPL | ✔ | ✔ | 2009 | 4.2.3 | 426 | 29 | 104 | ~7M+* | Global* | keiner |
Iban | MIT | ✘ | ✔ | 2013 | 1.3.0 | 50 | 9 | 19 | 178,39k | Deutsch | viele |
IsoCodes | GPL3 | ✘ | ✔ | 2012 | 2.1.1 | 466 | 22 | 54 | 145k | Französisch | viele |
SepaUtils | GPL3 | ✘ | ✔ | 2014 | 1.2.3 | 8 | 4 | 3 | 25k | Deutsch | phpunit |
Symfony | MIT | ✘ | ✔ | 2013 | 3.3.6 | 15k | 1214 | 5,6k | 23M+ | Französisch | viele |
Hinweise:
Werfen wir nun einen Blick auf die Funktionen.
+ | ISO | IANA | SEPA | ₶ | UO | MT | NC | ₴ | CB | H? | Registrierung | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116: vollständige, fehlerkorrigierte CSV-Datei mit Open-Source-Toolchain und Dokumentation |
Iban | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54: teilweiser, fest codierter, zweifelhafter Ursprung |
IsoCodes | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66: teilweise, fest codiert, zweifelhafter Ursprung |
SepaUtils | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89: teilweise, fest codiert, zweifelhafter Ursprung |
Symfony | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95: teilweise, fest codiert, zweifelhafter Ursprung |
Notiz:
IBAN XXXX XXXX XXXX XXXX
statt XXXXXXXXXXXXXXXX
– viel günstiger.Kurz gesagt: Obwohl Composer-Benutzer offensichtlich auf konkurrierende Bibliotheken (insbesondere Iban) umgestiegen sind, wahrscheinlich aufgrund der Zeit, die wir für die Integration einer Composer-Datei benötigten, handelt es sich bei diesen Bibliotheken oft entweder um vollwertige Web-Frameworks oder umständliche Abhängigkeiten, die weniger ausgereift sind und scheitern Um an die Free-Software-Stiftung zu erinnern, unterstützen Sie nicht das Paradigma der prozeduralen Programmierung (wenn AbstractProductClassMakerFactories einfach nicht ausreicht), verwenden Sie Daten aus zweifelhaften Quellen und neigen dazu, Lizenzen zu verwenden, die mit bestimmten inkompatibel sind Kommerzielle Nutzung, und es mangelt ehrlich gesagt an Funktionen.
Also, furchtloser Benutzer ... wählen Sie php-iban : die ethische, funktionale, zukunftsweisende und unkomplizierte Bibliothek Ihrer Wahl für die IBAN- und IIBAN-Verarbeitung. Entscheiden Sie sich für den Sieg! ;)
Wenn Sie die URL der nationalen IBAN-, BBAN- oder nationalen Prüfsummendokumentation aus offiziellen Quellen kennen, teilen Sie uns dies bitte unter Ausgabe Nr. 39 und Nr. 41 mit.
Die Banken auf den Färöer-Inseln (FO) antworten nicht, ebenso wenig wie die Dänische Nationalbank, die mich an sie verwiesen hat.
Luxemburg (LU) scheint keinem einheitlichen Prüfsummensystem zu entsprechen. Während einige IBANs mit einigermaßen gängigen Systemen validiert werden, ist dies bei anderen nicht der Fall oder sie verwenden andere. Die Behauptung, Luxemburg verfüge über ein nationales Prüfsummensystem, könnte tatsächlich falsch sein. Wir brauchen hier etwas Klarstellung, hoffentlich kann jemand eine offizielle Stellungnahme finden.
Mauretanien (MR) verfügt über ein Prüfsummensystem mit zwei Zeichen, aber unsere Beispiel-IBAN stimmt nicht mit MOD97-10 überein, was dem erwarteten System entsprechen würde. Früher war die IBAN hier immer auf „13“ Prüfsummenstellen festgelegt, ab der Registrierungsversion 66 ist sie nun dynamisch, was auf ein geändertes oder zumindest jetzt landesweit gelockertes Prüfsummensystem schließen lässt.
Wenn Sie bereit sind, etwas Zeit mit der Suche zu verbringen, könnten wir für die meisten Länder, insbesondere für kleinere, weitere Test-IBANs gebrauchen ...
Version 4.2.3 wurde veröffentlicht.
Version 4.2.2 wurde veröffentlicht.
Version 4.2.1 wurde veröffentlicht.
Version 4.2.0 wurde veröffentlicht.
Version 4.1.1 wurde veröffentlicht.
Version 4.1.0 wurde veröffentlicht.
Version 4.0.0 wurde veröffentlicht.
Version 3.0.3 wurde veröffentlicht.
Version 3.0.2 wurde veröffentlicht.
Version 3.0.0 wurde veröffentlicht.
Version 2.8.2 wurde veröffentlicht.
Version 2.8.1 wurde veröffentlicht.
TL
BBAN-Format entfernte überflüssige Leerzeichen (hatte keinen Einfluss auf die IBAN-Validierung). (Danke an @DanyCorbineauBappli) Version 2.8.0 wurde veröffentlicht.
Version 2.7.5 wurde veröffentlicht.
Version 2.7.4 wurde veröffentlicht.
iban_to_obfsucated_format()
oder ObfuscatedFormat()
zur Verschleierung der IBAN für bestimmte Ausgabeszenarien (z. B. relative Identifikation)Version 2.7.3 wurde veröffentlicht.
Version 2.7.2 wurde veröffentlicht.
Version 2.7.1 wurde veröffentlicht.
Version 2.7.0 wurde veröffentlicht.
Version 2.6.9 wurde veröffentlicht.
SM
) hinzugefügtVersion 2.6.8 wurde veröffentlicht.
IT
) hinzugefügtVersion 2.6.7 wurde veröffentlicht.
SK
) hinzugefügtVersion 2.6.6 wurde veröffentlicht.
ini_set
wurde behobenVersion 2.6.5 wurde veröffentlicht.
gmp
Erweiterung aktiviert warVersion 2.6.4 wurde veröffentlicht.
bcmath
ErweiterungVersion 2.6.3 wurde veröffentlicht.
Version 2.6.2 wurde veröffentlicht.
Version 2.6.1 wurde veröffentlicht.
Version 2.6.0 wurde veröffentlicht.
Version 2.5.9 wurde veröffentlicht.
Version 2.5.8 wurde veröffentlicht.
Version 2.5.7 wurde veröffentlicht.
Version 2.5.6 wurde veröffentlicht.
Version 2.5.5 wurde veröffentlicht.
Version 2.5.4 wurde veröffentlicht.
Version 2.5.3 wurde veröffentlicht.
Version 2.5.2 wurde veröffentlicht.
Version 2.5.1 wurde veröffentlicht.
908
) in Serbien (RS) scheint über mehrere aktive IBANs mit fehlerhaften nationalen Prüfsummen zu verfügen, daher ignorieren wir alle nationalen Prüfsummen auf Konten dieser Bank.Version 2.5.0 wurde veröffentlicht.
INGB
(ING Bank), die die ursprüngliche Prüfsumme gestrichen haben01
(Bank von Slowenien), die Prüfsummen nicht einhältutils/example-ibans
eine Bibliothek mit Test-IBANs gepflegt, die bereits zahlreiche Einträge für eine ganze Reihe von Ländern enthält. Dies sollte zukünftige Forschung vereinfachen.Version 2.4.20 wurde veröffentlicht.
Version 2.4.19 wurde veröffentlicht.
Version 2.4.18 wurde veröffentlicht.
Version 2.4.17 wurde veröffentlicht.
01
in Slowenien (SI)) das nationale Prüfsummensystem nicht. Der slowenischen nationalen Prüfsummenimplementierung wurde eine Ausnahme hinzugefügt.Version 2.4.16 wurde veröffentlicht.
Version 2.4.15 wurde veröffentlicht.
Version 2.4.14 wurde veröffentlicht.
Version 2.4.13 wurde veröffentlicht.
iban_mistranscription_suggestions()
verhält sich jetzt korrekt, wenn lose formatierte IBAN-ähnliche Zeichenfolgen übergeben werden_verhoeff()
der bestimmte nationale Prüfsummenimplementierungen unterstützt, verhält sich jetzt korrekt, wenn ungültige Eingaben übergeben werdenVersion 2.4.12 wurde veröffentlicht.
Version 2.4.11 wurde veröffentlicht.
central_bank_url
und central_bank_name
abzufragen, zum Beispiel:Version 2.4.10 wurde veröffentlicht.
currency_iso4217
speichert die offizielle Währung des Landes im ISO4217-Alphacode-Format, zum Beispiel:Version 2.4.9 wurde veröffentlicht.
parent_registrar
speichert das IBAN-Land des übergeordneten Registrars eines IBAN-Landes, zum Beispiel:Version 2.4.8 wurde veröffentlicht.
Version 2.4.7 wurde veröffentlicht.
Version 2.4.6 wurde veröffentlicht.
Version 2.4.5 wurde veröffentlicht.
Version 2.4.4 wurde veröffentlicht.
Version 2.4.3 wurde veröffentlicht.
Version 2.4.2 wurde veröffentlicht.
Version 2.4.1 wurde veröffentlicht.
Version 2.4.0 wurde veröffentlicht.
iban_{set|find|verify}_nationalchecksum()
. Derzeit werden Belgien (BE), Frankreich (FR) und Spanien (ES) unterstützt. Wenn Sie möchten, dass Ihr Land unterstützt wird, lesen Sie bitte Ausgabe Nr. 39 und Ausgabe Nr. 41. Version 2.3.1 wurde veröffentlicht.
Version 2.3.0 wurde veröffentlicht.
Version 2.2.0 wurde veröffentlicht.
Version 2.1.9 wurde veröffentlicht.
Version 2.1.8 wurde veröffentlicht.
Version 2.1.7 wurde veröffentlicht.
iban_get_nationalchecksum_part()
, iban_country_get_nationalchecksum_start_offset()
und iban_country_get_nationalchecksum_stop_offset()
und deren OO-Wrapper-Äquivalente $myIban->NationalChecksum()
, $myCountry->NationalChecksumStartOffset()
und $mycountry->NationalChecksumStopOffset()
abgefragt werden. Test und Dokumentation aktualisiert. Wenn Sie etwas über nationale Prüfsummenalgorithmen wissen, helfen Sie bitte bei Problem Nr. 39 mit.Version 2.1.6 wurde veröffentlicht.
machine_format_only
-Validierung aktualisiert.Version 2.1.5 wurde veröffentlicht.
machine_format_only
Modus für verify_iban()
um Problem Nr. 22 zu schließen.Version 2.1.4 wurde veröffentlicht.
Version 2.1.3 wurde veröffentlicht.
iban_to_human_format()
wurde behoben, wenn eine Eingabe übergeben wurde, die bereits Leerzeichen enthielt.Version 2.1.2 wurde veröffentlicht. Alle bekannten inoffiziellen IBAN-Ländercodes sind jetzt integriert. Neben kleineren Dokumentationsaktualisierungen und einer Kürzung des gemeldeten Namens Kosovo fügt diese Version Folgendes hinzu:
Version 2.1.1 wurde veröffentlicht. Derzeit werden inoffizielle IBAN-Ländercodes integriert, und der Prozess ist noch nicht abgeschlossen. Diese Version fügt hinzu:
Version 2.1.0 wurde veröffentlicht.
Derzeit werden inoffizielle IBAN-Ländercodes integriert, und der Prozess ist noch nicht abgeschlossen. Es wurde eine neue Flagge erstellt, um zu überprüfen, ob es sich bei einem Land um einen offiziellen, von SWIFT ausgestellten Datensatz handelt oder nicht. Daher wurden folgende neue Länder hinzugefügt.
Beachten Sie auch, dass der IIBAN (AA)-Datensatz als inoffiziell markiert wurde und die in docs/TODO
aufgeführten Funktionen in Github-Probleme migriert und diese Datei gelöscht wurden.
Version 2.0.1 wurde veröffentlicht. Damit soll das echte Testen, die Komponistenunterstützung und das endliche Nachholen von Änderungen gefeiert werden. Diese Version sollte mit allen Registrierungsänderungen bis zur Gegenwart auf dem neuesten Stand sein, einschließlich Änderungen oder Ergänzungen der Länder:
Version 1.6.0 wurde veröffentlicht. Diese Version bietet weitere Registerkorrekturen (neu hinzugefügte Gebiete mit fehlerhaften Daten, fehlerhafte Prüfsummen in Beispiel-IBANs usw.) sowie erweiterte Testroutinen, erweiterte Dokumentation und korrigierte Dokumentation. Allen Benutzern wird empfohlen, ein Upgrade durchzuführen. Wir verfügen jetzt über eine automatisierte Testskriptausführung mit Travis CI, um zusätzliche Robustheit für den gesamten festgeschriebenen Code zu gewährleisten. Dies dauerte länger als erwartet, da ich leider den genauen Zeitpunkt ausgewählt habe, an dem Travis ihre Build-Protokolle – https://www.traviscistatus.com/incidents/fcllblkclgmb – kaputt gemacht hat, um zu sehen, worum es bei der ganzen Aufregung ging … um erneut zu beweisen, dass Cloud Computing gerecht ist Ideal , um Dinge unerwartet kaputt zu machen. Da sie Dinge verbergen wollten, gab es buchstäblich überhaupt keine Debug-Ausgabe, und ich wurde zu der Annahme verleitet, dass dies meine Schuld sei. Liebe Programmierer, seht: Es bricht das Zeitalter des mystischen Scheiterns an.
Version 1.5.0 wurde veröffentlicht. Es gibt keine Codeänderungen, aber wir haben jetzt eine http://packagist.org/-Integration, die hoffentlich dazu führt, dass es funktioniert. Wenn Sie packagist verwenden, können Sie die Bibliothek jetzt zu Ihrem Projekt hinzufügen, indem Sie einfach composer require globalcitizen/php-iban
ausführen (danke an @acoulton für den Wegweiser).
Version 1.4.9 wurde mithilfe des neuen Github-basierten Veröffentlichungsprozesses veröffentlicht. Hoffentlich bietet dies einen soliden Ankerpunkt für diejenigen, die die Bibliothek mit anderer Software bündeln. Wir haben auch eine Composer-Metadatendatei beigesteuert, um die Integration zu erleichtern. Neue IBAN-Registrierungs-URLs integriert. Alte SVN-Tag-/Trunk-Struktur entfernt.
Korrigierte SWIFT-URL zur IBAN-Seite. Hervorgehobene Unterstützung für Fehltranskriptionsfehler.
Endlich hat Google code.google.com
getötet und wir sind zu Github migriert! Sobald die alte trunk
/ tag
-Struktur (überbleibt von svn
) bereinigt und dieses Dokument vom alten Wiki-Format in Markdown übersetzt wurde, wird eine neue Version herausgegeben.
Version 1.4.6 wurde veröffentlicht:
Leider verlangt Google jetzt, dass code.google.com
-Projekte Google Drive verwenden. Ich habe versucht, Google Drive zu verwenden (ein neues Konto eröffnen, durch E-Mail-Hoops hüpfen, wie ein Roboter behandelt werden, eine dumme neue, benutzerfreundliche Oberfläche lernen, bedeutungslose Fehlermeldungen wie „Ihr Freigabelimit wurde überschritten“ erhalten (mit 2x290-KB-Dateien auf einem neuen Konto, das ich erstellen sollte) und verloren völlig die Geduld.
Im Moment müssen Sie den Download also einfach mit git
durchführen. Ich werde php-iban
in Kürze auf Github migrieren. Google ist in letzter Zeit wirklich eine Nervensäge, mit all diesem Google+- und Google Drive-Müll, der Picasa ruiniert, Sketchup durch mangelnde Aufmerksamkeit ruiniert usw. Was denken sie?
Version 1.4.5 wurde veröffentlicht:
Version 1.4.4 wurde veröffentlicht:
Das Projekt -Quellcode -Repository hat von svn
(UGH) zu git
(yay!) Wechseln .
Version 1.4.3 wurde veröffentlicht:
docs/COMEDY-OF-ERRORS
als auch in der Inline-Inline-Inline-Konverter.Version 1.4.2 wurde veröffentlicht:
Version 1.4.1 wurde veröffentlicht:
$__disable_iiban_gmp_extension=true;
)Version 1.4.1 wird immer noch vorbereitet, drückt einige Fehler und aktualisiert die Registrierung ... In der Zwischenzeit wurde ich auf mich aufmerksam gemacht, dass wir im Code -Candy -Blog vorgestellt wurden! http://www.codecandies.com/2012/05/30/no-eceptions/ Huryay für den deutschen Sinn für Humor! Hahah.
Version 1.4.0 wurde veröffentlicht:
VERSION
hinzu, um harte Versionsinformationen in Quellbaum auf Anfrage hinzuzufügen. Version 1.3.9 wurde veröffentlicht:
Version 1.3.8 wurde veröffentlicht:
Version 1.3.7 wurde veröffentlicht:
Version 1.3.6 wurde veröffentlicht:
Version 1.3.5 wurde veröffentlicht:
Version 1.3.4 wurde veröffentlicht:
Version 1.3.3 wurde veröffentlicht:
Version 1.3.2 wurde veröffentlicht:
Version 1.3.1 wurde veröffentlicht:
Version 1.3.0 wurde veröffentlicht. Diese Veröffentlichung fügt Support Support Fehlkriptionsfehler Vorschlag hinzu.
Version 1.2.0 wurde veröffentlicht. Diese Veröffentlichung fügt die Unterstützung der International International Bankkontonummer (IIBAN) hinzu, wie laut dem aktuellen IIBAN-Internetentwurf unter http://tools.ietf.org/html/draft-iiban-01
Version 1.1.2 wurde veröffentlicht. Dies fügt der Hauptbibliotheksdatei lange offene Tags hinzu, um die Bereitstellung bei vielen Standard -PHP -Installationen zu vereinfachen.
Version 1.1.1 wurde veröffentlicht. Dadurch wird ein Tippfehler in einem Funktionsaufruf im neuen OO -Wrapper festgelegt. Nicht -OO -Benutzer müssen nicht ein Upgrade machen.
Version 1.1.0 wurde veröffentlicht. Diese Version fügt eine objektorientierte Wrapper -Bibliothek und verwandte Aktualisierungen zu Dokumentations- und Testskripten hinzu. Für vorhandene Benutzer ist es nicht wichtig, ein Upgrade zu verbessern.
Version 1.0.0 wurde veröffentlicht. Diese Version enthält die folgenden Änderungen:
iban_country_is_sepa($iban_country)
iban_to_human_format($iban)
Anfang des Monats ... kleine Wartung , nicht kritisch.
*Wir haben jetzt eine http://groups.google.com/group/php-iban-users mailing-Liste. Fühlen Sie sich frei, Ihr Feedback, Abfragen oder Vorschläge zu veröffentlichen - wir würden gerne wissen, wie Sie die Bibliothek verwenden. Bisher hat das Projekt über 400 Downloads erreicht und ist immer noch stark, mit mehr als einem neuen Benutzer pro Tag - eine ziemlich gute Vorstellung für eine spezielle Bibliothek!
* Version 12 wurde veröffentlicht. Die Registrierungsdatei wurde verbessert, teilweise aufgrund von Benutzerberichten und teilweise aufgrund von Problemen, die aufgedeckt wurden, während automatisierte Tests gegen Version 11 durchgeführt wurden.
Corryted Header Row Zeile Zwei Spalten wurden im Titel nicht dargestellt ( bban_length
und iban_length
). Sie wurden jetzt hinzugefügt.
Korrekturen an Registrierungseinträgen für französische Gebiete (PF, TF, YT, NC, PM, WF) sind französische Gebiete nicht ausdrücklich in die Swift -Spezifikations -Textdatei enthalten. Sie wurden aus Frankreich nach unstrukturierten Kommentaren gegen diesen Eintrag dupliziert. Beispiele für IBANs wurden dann zu veranschaulichenden Gründen hergestellt, indem einfach das Prefix des Landes geändert wurde, ohne die Prüfsummen zu regenerieren. Die IBAN -Beispiele, die für diese Gebiete enthalten sind, sollten jetzt korrekt sein.
Gibraltar und Ungarn (GI, Hu) haben einen Fehler behoben, in dem beide Gebiete einen überflüssigen Dickdarm hatten, der nach dem ersten Dokumentenumwandlung an ihre regulären Ausdrücke angehängt war, was für alle Ibans in diesen Ländern Validierungsfehler verursachte.
Mauritius (MU) korrigierte die Erwartung der Iban Länge von 31 bis 30.
In Schweden (SE) wurde Iban zu Beginn der Entwicklung manuell aus dem IBAN -Spezifikationsbeispiel modifiziert und hat keine Prüfsumme bestehen. Das offizielle Beispiel für IBAN wurde wiederhergestellt.
Tunesien (TN) korrigierte unsachgemäße Validierungszeichenfolgen, die durch einen Fehler in der anfänglichen Dokumentkonvertierung (IBAN-Formatspezifizier für die regelmäßige Expressionsumwandlungsfunktion) verursacht wurden.
require_once ( ' php-iban.php ' );
# ... your code utilising IBAN functions...
# Verify an IBAN number.
# An optional second argument specifies $machine_format_only (default is false)
# If true, the function will not tolerate unclean inputs
# (eg. spaces, dashes, leading 'IBAN ' or 'IIBAN ', lower case)
# If false (default), input can be in either:
# - printed ('IIBAN xx xx xx...' or 'IBAN xx xx xx...'); or
# - machine ('xxxxx')
# ... string formats.
# Returns true or false.
if (! verify_iban ( $ iban , $ machine_format_only = false )) {
# ...
}
# Check the checksum of an IBAN - code modified from Validate_Finance PEAR class
if (! iban_verify_checksum ( $ iban )) {
# ...
}
# Suggest what the user really meant in the case of transcription errors
$ suggestions = iban_mistranscription_suggestions ( $ bad_iban );
if ( count ( $ suggestions ) == 1 ) {
print " You really meant " . $ suggestions [ 0 ] . " , right? n" ;
}
# Find the correct checksum for an IBAN
$ correct_checksum = iban_find_checksum ( $ iban );
# Set the correct checksum for an IBAN
$ fixed_iban = iban_set_checksum ( $ iban );
# Verify the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system and we have implemented.
# (Returns '' if unimplemented, true or false)
$ result = iban_verify_nationalchecksum ( $ iban );
if ( $ result == '' ) {
print " National checksum system does not exist or remains unimplemented for the country of IBAN ' $ iban '. n" ;
}
elseif ( $ result == true ) {
print " IBAN ' $ iban ' passes the national checksum algorithm for its country. n" ;
}
else {
print " IBAN ' $ iban ' FAILS the national checksum algorithm for its country. n" ;
}
# Set the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system, where that system results in a dedicated checksum
# substring, and that we have implemented.
# (Returns '' if unimplemented, or the corrected string)
# (NOTE: On success, the function also subsequently recalculates the IBAN-level checksum)
$ national_checksum_algorithm_valid_iban = iban_set_nationalchecksum ( $ iban );
# Determine, but do not set, the pre-IBAN era, BBAN-level national checksum
# for those countries that have such a system, where that system results in
# a dedicated checksum substring, and that we have implemented.
# (Returns '' if unimplemented, or the expected national checksum substring)
$ expected_national_checksum = iban_find_nationalchecksum ( $ iban );
# Convert an IBAN to machine format. To do this, we
# remove IBAN from the start, if present, and remove
# non basic roman letter / digit characters
$ machine_iban = iban_to_machine_format ( $ iban );
# Convert an IBAN to human format. To do this, we
# add a space every four characters.
$ human_iban = iban_to_human_format ( $ iban );
# Convert an IBAN to obfuscated format for relative
# identification. To do this, we replace all but the
# leading country code and final four characters with
# asterisks.
$ obfuscated_iban = iban_to_obfuscated_format ( $ iban );
# Get the name of an IBAN country
$ country_name = iban_country_get_country_name ( $ iban_country );
# Get the domestic example for an IBAN country
$ country_domestic_example = iban_country_get_domestic_example ( $ iban_country );
# Get the BBAN example for an IBAN country
$ country_bban_example = iban_country_get_bban_example ( $ iban_country );
# Get the BBAN format (in SWIFT format) for an IBAN country
$ country_bban_format_as_swift = iban_country_get_bban_format_swift ( $ iban_country );
# Get the BBAN format (as a regular expression) for an IBAN country
$ country_bban_format_as_regex = iban_country_get_bban_format_regex ( $ iban_country );
# Get the BBAN length for an IBAN country
$ country_bban_length = iban_country_get_bban_length ( $ iban_country );
# Get the IBAN example for an IBAN country
$ country_iban_example = iban_country_get_iban_example ( $ iban_country );
# Get the IBAN length for an IBAN country
$ country_iban_length = iban_country_get_iban_length ( $ iban_country );
# Get the IBAN format (in SWIFT format) for an IBAN country
$ country_iban_format_as_swift = iban_country_get_iban_format_swift ( $ iban_country );
# Get the IBAN format (as a regular expression) for an IBAN country
$ country_iban_format_as_regex = iban_country_get_iban_format_regex ( $ iban_country );
# Determine whether an IBAN country is a member of SEPA (Single Euro Payments Area)
if (! iban_country_is_sepa ( $ iban_country )) {
# ... do something xenophobic ...
}
# Get the bank ID start offset for an IBAN country
$ country_bankid_start_offset = iban_country_get_bankid_start_offset ( $ iban_country );
# Get the bank ID stop offset for an IBAN country
$ country_bankid_stop_offset = iban_country_get_bankid_stop_offset ( $ iban_country );
# Get the branch ID start offset for an IBAN country
$ country_branchid_start_offset = iban_country_get_branchid_start_offset ( $ iban_country );
# Get the branch ID stop offset for an IBAN country
$ country_branchid_stop_offset = iban_country_get_branchid_stop_offset ( $ iban_country );
# Get the registry edition for an IBAN country (note: IIBAN country 'AA' returns 'N/A')
$ country_registry_edition = iban_country_get_registry_edition ( $ iban_country );
# Determine whether an IBAN country is an official, SWIFT issued country record
if (! iban_country_get_country_swift_official ( $ iban_country )) {
# ... do something against decentralization ...
}
# Get the IANA code for an IBAN country
$ country_iana = iban_country_get_iana ( $ iban_country );
# Get the ISO3166-1 alpha-2 code for an IBAN country
$ country_iso3166 = iban_country_get_iso3166 ( $ iban_country );
# Get the parent registrar IBAN country of an IBAN country
# (Returns '' in the normal case that the country is independently registered)
$ registrar_country = iban_country_get_parent_registrar ( $ iban_country );
if ( $ registrar_country == '' ) {
print " The mighty nation of ' $ iban_country ' stands strong and proud... n" ;
print " ... with its own heirarchy of bureaucrats! n" ;
}
else {
print " It has been foretold that the downtrodden natives of ' $ iban_country ' will one day n" ;
print " rise up and throw off the shackles of the evil ' $ registrar_country ' oppressors! n" ;
}
# Get the official currency of an IBAN country as an ISO4217 alpha code
# (Returns '' in the Internet (IIBAN) case, ie. no official currency)
$ official_currency = iban_country_get_currency_iso4217 ( $ iban_country );
if ( $ official_currency == '' ) {
print " There is no official currency for the IBAN country ' $ iban_country '. n" ;
}
# Get the URL of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_url = iban_country_get_central_bank_url ( $ iban_country );
# Get the name of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_name = iban_country_get_central_bank_name ( $ iban_country );
# Get the membership type of the country
# There are four types of memberships:
# * EU-Member States (eu_member)
# * EFTA-Member States (efta_member)
# * Other Memberships, which have monetary agreements with the EU (other_member)
# * Non-Members, which don't belong to the EU or have agreements (non_member)
$ country_membership = iban_country_get_membership ( $ iban_country );
# Get if the country is a eu member state
# (Note: Returns true, if member state; false otherwise)
$ country_membership = iban_country_get_is_eu_member ( $ iban_country );
# Get an array of all the parts from an IBAN
$ iban_parts = iban_get_parts ( $ iban );
# Get the country part from an IBAN
$ iban_country = iban_get_country_part ( $ iban );
# Get the BBAN part from an IBAN
$ bban = iban_get_bban_part ( $ iban );
# Get the Bank ID (institution code) from an IBAN
$ bank = iban_get_bank_part ( $ iban );
# Get the Branch ID (sort code) from an IBAN
# (NOTE: only available for some countries)
$ sortcode = iban_get_branch_part ( $ iban );
# Get the (branch-local) account ID from an IBAN
# (NOTE: only available for some countries)
$ account = iban_get_account_part ( $ iban );
# Get the checksum part from an IBAN
$ checksum = iban_get_checksum_part ( $ iban );
# Get the national checksum part from an IBAN (if it exists)
$ checksum = iban_get_nationalchecksum_part ( $ iban );
Die Verwendung von OO ist entmutigt, da es einen heutigen Trend gibt, das Modell zu überbeanspruchen. Wenn Sie OO PHP jedoch bevorzugen, verwenden Sie auf jeden Fall den nachstehend beschriebenen objektorientierten Wrapper.
require_once ( ' oophp-iban.php ' );
# ... your code utilising object oriented php iban functions...
# Example instantiation
$ iban = ' AZ12345678901234 '
$ myIban = new IBAN ( $ iban );
# Verify an IBAN number.
# Tolerates spaces, prefixes "IBAN ...", dashes, lowercase input, etc.
# Returns true or false.
if (! $ myIban -> Verify ()) {
# ...
}
# Verify an IBAN number in machine format only.
# Does not tolerate lowercase input, separators, whitespace or prefixes.
# Returns true or false.
if (! $ myIban -> VerifyMachineFormatOnly ()) {
# ...
}
# Check the checksum of an IBAN - code modified from Validate_Finance PEAR class
if (! $ myIban -> VerifyChecksum ()) {
# ...
}
# Suggest what the user really meant in the case of mistranscription errors
$ suggestions = $ badIban -> MistranscriptionSuggestions ();
if ( count ( $ suggestions )== 1 ) {
print " You really meant " . $ suggestions [ 0 ] . " , right? n" ;
}
# Find the correct checksum for an IBAN
$ correct_checksum = $ myIban -> FindChecksum ();
# Set the correct checksum for an IBAN
$ fixed_iban = $ myIban -> SetChecksum ()
# Verify the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system and we have implemented.
# (Returns '' if unimplemented, true or false)
$ result = $ myIban -> VerifyNationalChecksum ();
if ( $ result == '' ) {
print " National checksum system does not exist or remains unimplemented for this IBAN's country. n" ;
}
elseif ( $ result == true ) {
print " IBAN passes the national checksum algorithm for its country. n" ;
}
else {
print " IBAN FAILS the national checksum algorithm for its country. n" ;
}
# Set the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system, where that system results in a dedicated checksum
# substring, and that we have implemented.
# (Returns '' if unimplemented, or the corrected string)
# (NOTE: On success, the function also subsequently recalculates the IBAN-level checksum)
$ myIban -> SetNationalChecksum ();
# Determine, but do not set, the pre-IBAN era, BBAN-level national checksum
# for those countries that have such a system, where that system results in
# a dedicated checksum substring, and that we have implemented.
# (Returns '' if unimplemented, or the expected national checksum substring)
$ national_checksum = $ myIban -> FindNationalChecksum ();
# Convert an IBAN to machine format. To do this, we
# remove IBAN from the start, if present, and remove
# non basic roman letter / digit characters
$ machine_iban = $ myIban -> MachineFormat ();
# Convert an IBAN to human format. To do this, we
# add a space every four characters.
$ human_iban = $ myIban -> HumanFormat ();
# Convert an IBAN to obfuscated format for relative
# identification. To do this, we replace all but the
# leading country code and final four characters with
# asterisks.
$ obfsucated_iban = $ myIban -> ObfuscatedFormat ();
# To list countries, use the IBAN Class...
$ myIban -> Countries ();
# ... everything else is in the IBANCountry class.
# Example instantiation
$ countrycode = ' DE ' ;
$ myCountry = new IBANCountry ( $ countrycode );
# Get the country code of an IBAN country
$ country_code = $ myCountry -> Code ();
# Get the name of an IBAN country
$ country_name = $ myCountry -> Name ();
# Get the domestic example for an IBAN country
$ country_domestic_example = $ myCountry -> DomesticExample ();
# Get the BBAN example for an IBAN country
$ country_bban_example = $ myCountry -> BBANExample ();
# Get the BBAN format (in SWIFT format) for an IBAN country
$ country_bban_format_as_swift = $ myCountry -> BBANFormatSWIFT ();
# Get the BBAN format (as a regular expression) for an IBAN country
$ country_bban_format_as_regex = $ myCountry -> BBANFormatRegex ();
# Get the BBAN length for an IBAN country
$ country_bban_length = $ myCountry -> BBANLength ();
# Get the IBAN example for an IBAN country
$ country_iban_example = $ myCountry -> IBANExample ();
# Get the IBAN length for an IBAN country
$ country_iban_length = $ myCountry -> IBANLength ();
# Get the IBAN format (in SWIFT format) for an IBAN country
$ country_iban_format_as_swift = $ myCountry -> IBANFormatSWIFT ();
# Get the IBAN format (as a regular expression) for an IBAN country
$ country_iban_format_as_regex = $ myCountry -> IBANFormatRegex ();
# Determine whether an IBAN country is a member of SEPA (Single Euro Payments Area)
if (! $ myCountry -> IsSEPA ()) {
# ... do something xenophobic ...
}
# Get the bank ID start offset for an IBAN country
$ country_bankid_start_offset = $ myCountry -> BankIDStartOffset ();
# Get the bank ID stop offset for an IBAN country
$ country_bankid_stop_offset = $ myCountry -> BankIDStopOffset ();
# Get the branch ID start offset for an IBAN country
$ country_branchid_start_offset = $ myCountry -> BranchIDStartOffset ();
# Get the branch ID stop offset for an IBAN country
$ country_branchid_stop_offset = $ myCountry -> BranchIDStopOffset ();
# Get the national checksum start offset for an IBAN country
$ country_nationalchecksum_start_offset = $ myCountry -> NationalChecksumStartOffset ();
# Get the national checksum stop offset for an IBAN country
$ country_nationalchecksum_stop_offset = $ myCountry -> NationalChecksumStopOffset ();
# Get the registry edition for an IBAN country (note: IIBAN country 'AA' returns 'N/A')
$ country_registry_edition = $ myCountry -> RegistryEdition ();
# Determine whether an IBAN country is an official, SWIFT issued country record
if (! $ myCountry -> SWIFTOfficial ()) {
# ... do something against decentralization ...
}
# Get the IANA code for an IBAN country
$ country_iana = $ myCountry -> IANA ();
# Get the ISO3166-1 alpha-2 code for an IBAN country
$ country_iso3166 = $ myCountry -> ISO3166 ();
# Get the parent registrar IBAN country of an IBAN country
# (Returns '' in the normal case that the country is independently registered)
$ registrar_country = $ myCountry -> ParentRegistrar ();
if ( $ registrar_country == '' ) {
print " The mighty nation of ' $ iban_country ' stands strong and proud... n" ;
print " ... with its own heirarchy of bureaucrats! n" ;
}
else {
print " It has been foretold that the downtrodden natives of ' $ iban_country ' will one day n" ;
print " rise up and throw off the shackles of the evil ' $ registrar_country ' oppressors! n" ;
}
# Get the official currency of an IBAN country as an ISO4217 alpha code
# (Returns '' in the Internet (IIBAN) case, ie. no official currency)
$ official_currency = $ myCountry -> CurrencyISO4217 ();
if ( $ official_currency == '' ) {
print " There is no official currency for the IBAN country ' $ iban_country '. n" ;
}
# Get the URL of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_url = $ myCountry -> CentralBankURL ();
# Get the name of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_name = $ myCountry -> CentralBankName ();
# Get an array of all the parts from an IBAN
$ iban_parts = $ myIban -> Parts ();
# Get the country part from an IBAN
$ iban_country = $ myIban -> Country ();
# Get the checksum part from an IBAN
$ checksum = $ myIban -> Checksum ();
# Get the BBAN part from an IBAN
$ bban = $ myIban -> BBAN ();
# Get the Bank ID (institution code) from an IBAN
$ bank = $ myIban -> Bank ();
# Get the Branch ID (sort code) from an IBAN
# (NOTE: only available for some countries)
$ sortcode = $ myIban -> Branch ();
# Get the (branch-local) account ID from an IBAN
# (NOTE: only available for some countries)
$ account = $ myIban -> Account ();
# Get the national checksum part from an IBAN
# (NOTE: only available for some countries)
$ checksum = $ myIban -> NationalChecksum ();
Überzeugen Sie sich selbst, wie sich unser Ansatz und unsere Funktionen positiv mit all diesen Bibliotheken vergleichen ...
Sprache | Bibliothek |
---|---|
C# | Iban-api-net |
Java | Iban-api-Java |
Java | IBAN4J |
Java | Java-iban |
JavaScript | iban.js |
JavaScript | ng-iban |
Objectivec | Iban-Helper |
Objectivec | Ibanvalidation |
Perl | Verschiedene CPAN -Bibliotheken |
Python | Django-LocalFlavor |
Python | Iban-Generator |
Rubin | Bank |
Rubin | Iban-Tools |
Rubin | ibandit |
Rubin | Ibanizator |
Rubin | ISO-IBAN |