php-iban
est une bibliothèque permettant d'analyser, de valider et de générer des informations sur les comptes bancaires IBAN (et IIBAN) en PHP.
Toutes les parties d'un IBAN peuvent être récupérées, y compris le code du pays, la somme de contrôle, le BBAN, le code de l'institution financière ou de la banque, le numéro de compte et, lorsqu'un système national de longueur fixe est utilisé, également le code de succursale/de tri. Les anciennes sommes de contrôle nationales peuvent également être récupérées, validées et correctement définies, le cas échéant, qu'elles s'appliquent à la partie numéro de compte, aux identifiants de banque et de succursale, à tout ou partie de ce qui précède. Les codes de pays IBAN peuvent être convertis aux formats ISO3166-1 alpha-2 et IANA, le pays IBAN parent agissant en tant que registraire pour les territoires dépendants peut être interrogé, la monnaie nationale officielle (format de code alpha ISO4217), le nom de la banque centrale et l'URL de la banque centrale. peuvent également être interrogés pour faciliter l’intégration. Les IBAN peuvent être convertis entre représentation humaine et machine. Les IBAN peuvent être obscurcis pour être présentés à des humains dans des circonstances particulières telles qu'une identification relative. Une base de données d’exemples/tests d’IBAN de différents pays est incluse. Enfin, des suggestions très précises concernant la saisie initialement prévue peuvent être faites lorsqu'un IBAN incorrect est détecté et est dû à une erreur de transcription.
L'analyseur a été construit à l'aide d'expressions régulières pour adapter le contenu du registre IBAN officiel disponible auprès de SWIFT, puis modifié manuellement pour des cas particuliers tels que des erreurs et des omissions dans les spécifications officielles de SWIFT.
Diverses lacunes dans l'adaptation initiale ont depuis été corrigées, et la version actuelle devrait être une implémentation assez correcte et fiable.
Le cas échéant, les recommandations du Comité européen des normes bancaires (ECBS) ont également été intégrées.
Veuillez garder à l'esprit que, comme les spécifications changent fréquemment, il se peut qu'elles ne soient pas à jour à 100 % si une nouvelle version a été récemment publiée - je fais cependant de mon mieux. Nous pensons actuellement que nous sommes à jour avec la version de janvier 2020, c'est-à-dire. Version PDF n°86.
Sous licence LGPL, son utilisation est gratuite dans des contextes commerciaux.
Les 116 pays IBAN officiels et non officiels suivants sont pris en charge.
Si vous utilisez composer, vous pouvez simplement exécuter composer require globalcitizen/php-iban
pour commencer. Apparemment (et ) ont été réalisés via composer.
(Si vous n'avez pas encore composer
et souhaitez l'installer de manière non sécurisée (non recommandé, mais pratique), vous pouvez exécuter curl -sS https://getcomposer.org/installer | php
ou wget -O- https://getcomposer.org/installer | php
)
Ensuite, ajoutez simplement ce qui suit à votre fichier composer.json
:
// composer.json
{
"require" : {
"globalcitizen/php-iban" : "4.2.3"
}
}
Ensuite, vous pouvez installer les nouvelles dépendances en exécutant la commande update de composer
à partir du répertoire où se trouve votre fichier composer.json
:
# 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
Vous pouvez voir cette bibliothèque sur Packagist.
Pour une installation standard, utilisez la commande git clone
:
# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone [email protected]:globalcitizen/php-iban.git
Alternativement, pour intégrer la bibliothèque php-iban
dans votre propre référentiel géré par git
avec un numéro de révision spécifique, de sorte qu'il soit possible de mettre à jour la version de manière prévisible tout en conservant un système plus grand qui dépend de ses fonctionnalités :
# 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 '
Ensuite, lorsque vous consultez pour la première fois des projets git
avec des sous-modules, vous devez normalement effectuer quelques étapes supplémentaires :
# check out your project as normal
$ git clone [email protected]:your/project.git
# initialize submodules
$ git submodule init
# update submodules
$ git submodule update
Pour ignorer ces étapes, ajoutez l'argument --recursive
à git clone
lors de la vérification :
# check out your project, initialize and update all submodules
$ git clone --recursive [email protected]:your/project.git
Si vous souhaitez ultérieurement que votre projet utilise une version plus récente de php-iban
, exécutez :
# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m ' Update php-iban submodule '
zip
ou tar.gz
unzip filename.zip
sur les plates-formes de type Unix.php-iban
à partir du sous-répertoire libraries/php-iban
du répertoire parent, vous pouvez utiliser l'instruction require_once() suivante : <?php
require_once ( dirname ( __FILE__ ) . ' /../libraries/php-iban/php-iban.php ' );
# ... your code utilizing php-iban
?>
Le tableau suivant compare php-iban à d'autres projets PHP offrant des fonctionnalités liées à l'IBAN, sur la base des informations générales sur le projet et des paradigmes de programmation pris en charge.
Projet | Lic. | Procédure | OO | A commencé | Dernier | Étoile | Montre | Fourchette | Installations | Culture à la maison | Dépôts |
---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | LGPL | ✔ | ✔ | 2009 | 4.2.3 | 426 | 29 | 104 | ~7M+* | Mondial* | aucun |
Iban | MIT | ✘ | ✔ | 2013 | 1.3.0 | 50 | 9 | 19 | 178,39k | Allemand | beaucoup |
Codes ISO | GPL3 | ✘ | ✔ | 2012 | 2.1.1 | 466 | 22 | 54 | 145k | Français | beaucoup |
SepaUtil's | GPL3 | ✘ | ✔ | 2014 | 1.2.3 | 8 | 4 | 3 | 25k | Allemand | unité php |
Symfony | MIT | ✘ | ✔ | 2013 | 3.3.6 | 15k | 1214 | 5,6k | 23M+ | Français | beaucoup |
Remarques :
Jetons maintenant un œil aux fonctionnalités.
+ | OIN | IANA | SEPA | ₶ | UO | MT | Caroline du Nord | ₴ | CB | H? | Enregistrement | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116 : CSV complet, corrigé des erreurs, avec chaîne d'outils et documentation open source |
Iban | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54 : partiel, codé en dur, origine douteuse |
Codes ISO | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66 : partiel, codé en dur, origine douteuse |
SepaUtil's | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89 : partiel, codé en dur, origine douteuse |
Symfony | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95 : partielle, codée en dur, origine douteuse |
Note:
IBAN XXXX XXXX XXXX XXXX
au lieu de XXXXXXXXXXXXXXXX
- beaucoup plus raisonnable.En bref, alors que les utilisateurs de Composer se sont apparemment tournés vers les bibliothèques concurrentes (en particulier Iban), probablement en raison du temps qu'il nous a fallu pour intégrer un fichier Composer, ces bibliothèques sont souvent soit des frameworks Web à part entière, soit lourdes en dépendances, moins matures, échouent. pour saluer la fondation du logiciel libre, ne supportent pas le paradigme de programmation procédurale (pour le cas où AbstractProductClassMakerFactories ne suffit pas), utilisent des données provenant de sources douteuses, ont tendance à utiliser des licences incompatibles avec certaines utilisations commerciales, et sont franchement à court de fonctionnalités.
Alors, utilisateur intrépide... choisissez php-iban : la bibliothèque de choix éthique, fonctionnelle, tournée vers l'avenir et sans tracas pour le traitement des IBAN et IIBAN. Choisissez de gagner ! ;)
Si vous connaissez l'URL de l'IBAN national, du BBAN ou de la somme de contrôle nationale provenant de sources officielles, veuillez nous en informer au numéro 39 et au numéro 41.
Les banques des îles Féroé (FO) ne répondent pas, pas plus que la Banque nationale danoise qui m'a référé à elles.
Le Luxembourg (LU) ne semble se conformer à aucun système de somme de contrôle unique. Bien que certains IBAN soient validés avec des systèmes raisonnablement courants, d'autres ne le font pas ou en utilisent d'autres. L’idée selon laquelle le Luxembourg disposerait d’un système national de somme de contrôle pourrait en fait être erronée. Nous avons besoin de quelques éclaircissements ici, j'espère que quelqu'un pourra déterrer une déclaration officielle.
La Mauritanie (MR) dispose d'un système de somme de contrôle à deux caractères mais notre exemple IBAN ne correspond pas au MOD97-10 qui serait le système attendu. Auparavant, l'IBAN était toujours fixé à « 13 » chiffres de contrôle, mais à partir du registre v66, il est désormais dynamique, ce qui suggère un système de somme de contrôle modifié ou du moins désormais assoupli au niveau national.
Si vous êtes prêt à passer un peu de temps à chercher, nous pourrions utiliser des tests IBAN supplémentaires pour la plupart des pays, en particulier les plus petits...
La version 4.2.3 a été publiée.
La version 4.2.2 a été publiée.
La version 4.2.1 a été publiée.
La version 4.2.0 a été publiée.
La version 4.1.1 a été publiée.
La version 4.1.0 a été publiée.
La version 4.0.0 a été publiée.
La version 3.0.3 a été publiée.
La version 3.0.2 a été publiée.
La version 3.0.0 a été publiée.
La version 2.8.2 a été publiée.
La version 2.8.1 a été publiée.
TL
BBAN a supprimé les espaces superflus (n'a pas affecté la validation IBAN). (Merci à @DanyCorbineauBappli) La version 2.8.0 a été publiée.
La version 2.7.5 a été publiée.
La version 2.7.4 a été publiée.
iban_to_obfsucated_format()
ou ObfuscatedFormat()
pour masquer l'IBAN pour des scénarios de sortie spécifiques (tels que l'identification relative)La version 2.7.3 a été publiée.
La version 2.7.2 a été publiée.
La version 2.7.1 a été publiée.
La version 2.7.0 a été publiée.
La version 2.6.9 a été publiée.
SM
)La version 2.6.8 a été publiée.
IT
)La version 2.6.7 a été publiée.
SK
)La version 2.6.6 a été publiée.
ini_set
activéLa version 2.6.5 a été publiée.
gmp
était activéeLa version 2.6.4 a été publiée.
bcmath
La version 2.6.3 a été publiée.
La version 2.6.2 a été publiée.
La version 2.6.1 a été publiée.
La version 2.6.0 a été publiée.
La version 2.5.9 a été publiée.
La version 2.5.8 a été publiée.
La version 2.5.7 a été publiée.
La version 2.5.6 a été publiée.
La version 2.5.5 a été publiée.
La version 2.5.4 a été publiée.
La version 2.5.3 a été publiée.
La version 2.5.2 a été publiée.
La version 2.5.1 a été publiée.
908
) en Serbie (RS) semble avoir plusieurs IBAN actifs avec des sommes de contrôle nationales cassées, nous ignorons donc toutes les sommes de contrôle nationales sur les comptes de cette banque.La version 2.5.0 a été publiée.
INGB
(ING Bank) qui a abandonné la somme de contrôle originale01
(Banque de Slovénie) qui n'honore pas les sommes de contrôleutils/example-ibans
qui contient déjà un bon nombre d'entrées pour un bon nombre de pays. Cela devrait simplifier les recherches futures.La version 2.4.20 a été publiée.
La version 2.4.19 a été publiée.
La version 2.4.18 a été publiée.
La version 2.4.17 a été publiée.
01
en Slovénie (SI)) ne met pas en œuvre le système de somme de contrôle national, ce qui constitue un cas particulier. Une exception a été ajoutée à la mise en œuvre de la somme de contrôle nationale en Slovénie.La version 2.4.16 a été publiée.
La version 2.4.15 a été publiée.
La version 2.4.14 a été publiée.
La version 2.4.13 a été publiée.
iban_mistranscription_suggestions()
se comporte désormais correctement lorsqu'elle est transmise à des chaînes de type IBAN peu formatées._verhoeff()
qui prend en charge certaines implémentations nationales de somme de contrôle se comporte désormais correctement en cas de transmission d'une entrée invalide.La version 2.4.12 a été publiée.
La version 2.4.11 a été publiée.
central_bank_url
et central_bank_name
, par exemple :La version 2.4.10 a été publiée.
currency_iso4217
stocke la monnaie officielle du pays au format de code alpha ISO4217, par exemple :La version 2.4.9 a été publiée.
parent_registrar
stocke le pays IBAN du bureau d'enregistrement parent d'un pays IBAN, par exemple :La version 2.4.8 a été publiée.
La version 2.4.7 a été publiée.
La version 2.4.6 a été publiée.
La version 2.4.5 a été publiée.
La version 2.4.4 a été publiée.
La version 2.4.3 a été publiée.
La version 2.4.2 a été publiée.
La version 2.4.1 a été publiée.
La version 2.4.0 a été publiée.
iban_{set|find|verify}_nationalchecksum()
et leurs équivalents OO-wrapper. Actuellement, la Belgique (BE), la France (FR) et l'Espagne (ES) sont prises en charge. Si vous souhaitez que votre pays soit pris en charge, veuillez consulter les numéros 39 et 41. La version 2.3.1 a été publiée.
La version 2.3.0 a été publiée.
La version 2.2.0 a été publiée.
La version 2.1.9 a été publiée.
La version 2.1.8 a été publiée.
La version 2.1.7 a été publiée.
iban_get_nationalchecksum_part()
, iban_country_get_nationalchecksum_start_offset()
et iban_country_get_nationalchecksum_stop_offset()
et leurs équivalents OO-wrapper $myIban->NationalChecksum()
, $myCountry->NationalChecksumStartOffset()
et $mycountry->NationalChecksumStopOffset()
. Test et documentation mis à jour. Si vous savez quelque chose sur les algorithmes de somme de contrôle nationaux, veuillez donner un coup de main au numéro 39.La version 2.1.6 a été publiée.
machine_format_only
.La version 2.1.5 a été publiée.
machine_format_only
strict supplémentaire pour verify_iban()
afin de fermer le problème n°22.La version 2.1.4 a été publiée.
La version 2.1.3 a été publiée.
iban_to_human_format()
a été corrigé lors du passage d'une entrée contenant déjà des espaces.La version 2.1.2 a été publiée. Tous les codes pays IBAN non officiels connus sont désormais intégrés. Outre des mises à jour mineures de la documentation et un raccourcissement du nom signalé du Kosovo, cette version ajoute :
La version 2.1.1 a été publiée. Actuellement, les codes de pays IBAN non officiels sont en cours d'intégration et le processus se poursuit. Cette version ajoute :
La version 2.1.0 a été publiée.
Actuellement, les codes de pays IBAN non officiels sont en cours d'intégration et le processus se poursuit. Un nouveau drapeau a été créé pour vérifier si un pays est un enregistrement officiel émis par SWIFT ou non. Les nouveaux pays suivants ont donc été ajoutés.
Notez également que l'enregistrement IIBAN (AA) a été marqué comme non officiel et que les fonctionnalités répertoriées dans docs/TODO
ont été migrées vers les problèmes Github et que ce fichier a été supprimé.
La version 2.0.1 a été publiée. Il s'agit de célébrer les tests réels, le support du compositeur, ainsi que de rattraper enfin les changements. Cette version doit être à jour avec toutes les modifications apportées au registre, y compris les modifications ou ajouts aux pays :
La version 1.6.0 a été publiée. Cette version propose davantage de corrections de registre (territoires nouvellement ajoutés avec des données erronées, sommes de contrôle incorrectes dans les exemples d'IBAN, etc.) ainsi que des routines de test améliorées, une documentation étendue et une documentation corrigée. Il est conseillé à tous les utilisateurs de mettre à niveau. Nous disposons désormais d'une exécution automatisée de scripts de test avec Travis CI, pour fournir une robustesse supplémentaire à tout le code validé. Cela a pris plus de temps que prévu car malheureusement j'ai choisi l'heure exacte à laquelle Travis a cassé ses journaux de construction - https://www.traviscistatus.com/incidents/fcllblkclgmb - pour voir de quoi il s'agissait... prouvant une fois de plus que le cloud computing n'est qu'un problème. idéal pour casser des choses de manière inattendue. Parce qu'ils veulent cacher des choses, il n'y a littéralement eu aucune sortie de débogage, et j'ai été amené à croire que c'était de ma faute. Chers programmeurs, voyez : c’est l’aube de l’ère de l’échec mystique.
La version 1.5.0 a été publiée. Il n'y a aucun changement de code, mais nous avons maintenant l'intégration http://packagist.org/, j'espère que cela le déclenchera pour commencer à fonctionner. Si vous utilisez packagist, vous pouvez maintenant ajouter la bibliothèque à votre projet en exécutant simplement composer require globalcitizen/php-iban
(merci à @acoulton d'avoir montré la voie)
La version 1.4.9 a été publiée à l'aide du nouveau processus de publication basé sur Github. Espérons que cela fournisse un point d’ancrage solide pour ceux qui regroupent la bibliothèque avec d’autres logiciels. Nous disposons également d'un fichier de métadonnées du compositeur pour faciliter l'intégration. Nouvelles URL de registre IBAN intégrées. Suppression de l'ancienne structure de balise/tronc SVN.
URL SWIFT corrigée vers la page IBAN. Prise en charge accentuée des erreurs de transcription.
Enfin, Google a tué code.google.com
et nous avons migré vers Github ! Une fois que l'ancienne structure trunk
/ tag
(restante de svn
) sera nettoyée et que ce document sera traduit de l'ancien format wiki en markdown, une nouvelle version sera publiée.
La version 1.4.6 est sortie :
Malheureusement, Google exige désormais que les projets code.google.com
utilisent Google Drive. J'ai essayé d'utiliser Google Drive (créer un nouveau compte, parcourir les étapes de messagerie, être traité comme un robot, apprendre une nouvelle interface stupide et conviviale, recevoir des messages d'erreur dénués de sens comme "Votre limite de partage a été dépassée" (avec 2 fichiers de 290 Ko sur un nouveau compte qu'on m'a dit de créer) et j'ai complètement perdu patience.
Donc pour le moment, il vous suffira de télécharger en utilisant git
. Je vais prochainement migrer php-iban
vers Github. Google est vraiment un emmerdeur ces derniers temps, avec toutes ces cochonneries de Google+ et Google Drive, ruinant Picasa, ruinant Sketchup par manque d'attention, etc. À quoi pensent-ils ?
La version 1.4.5 est sortie :
La version 1.4.4 est sortie :
Le référentiel de code source du projet est passé de svn
(UGH) à git
(yay!) .
La version 1.4.3 a été publiée:
docs/COMEDY-OF-ERRORS
et dans le convertisseur de registre.La version 1.4.2 a été publiée:
La version 1.4.1 a été publiée:
$__disable_iiban_gmp_extension=true;
)La version 1.4.1 est toujours en cours de préparation, écrasant certains bogues et mettant à jour le registre ... En attendant, il est venu à mon attention que nous avons été présentés dans le blog Code Candy! http://www.codecandies.com/2012/05/30/no -xceptions/ hooray pour le sens de l'humour allemand! Hahah.
La version 1.4.0 a été publiée:
VERSION
, pour inclure des informations de version dure dans Source Tree, par demande. La version 1.3.9 a été publiée:
La version 1.3.8 a été publiée:
La version 1.3.7 a été publiée:
La version 1.3.6 a été publiée:
La version 1.3.5 a été publiée:
La version 1.3.4 a été publiée:
La version 1.3.3 a été publiée:
La version 1.3.2 a été publiée:
La version 1.3.1 a été publiée:
La version 1.3.0 a été publiée. Cette version ajoute un support de suggestion d'erreur de transmission.
La version 1.2.0 a été publiée. Cette version ajoute une prise en charge du numéro de compte bancaire international Internet (IIBAN), selon le projet Internet actuel de l'Iiban sur http://tools.ietf.org/html/draft-iiban-01
La version 1.1.2 a été publiée. Cela ajoute des balises ouvertes longues au fichier de bibliothèque principale afin de simplifier le déploiement sur de nombreuses installations PHP par défaut.
La version 1.1.1 a été publiée. Cela corrige une faute de frappe dans un appel de fonction dans le nouveau wrapper OO. Les utilisateurs non OO n'ont pas besoin de mettre à niveau.
La version 1.1.0 a été publiée. Cette version ajoute une bibliothèque de wrapper orientée objet et des mises à jour connexes aux scripts de documentation et de test. Il n'est pas essentiel pour les utilisateurs existants de mettre à niveau.
La version 1.0.0 a été publiée. Cette version comprend les modifications suivantes:
iban_country_is_sepa($iban_country)
iban_to_human_format($iban)
Plus tôt dans le mois ... une petite libération de maintenance , pas critique.
* Nous avons maintenant un http://groups.google.com/group/php-iban-users Liste de diffusion. N'hésitez pas à publier vos commentaires, requêtes ou suggestions - nous aimerions savoir comment vous utilisez la bibliothèque. À ce jour, le projet a atteint plus de 400 téléchargements et est toujours fort, avec plus d'un nouvel utilisateur par jour - une assez bonne affiche pour une bibliothèque spécialisée!
* La version 12 a été publiée. Le fichier de registre a été amélioré, en partie à cause des rapports des utilisateurs et en partie à la suite de problèmes découverts lors de la réalisation de tests automatisés contre la version 11.
La ligne d'en-tête corrigée, deux colonnes n'étaient pas représentées dans le titre ( bban_length
et iban_length
). Ils ont maintenant été ajoutés.
Les correctifs aux inscriptions de registre pour les territoires français (PF, TF, YT, NC, PM, WF), les territoires français ne sont pas explicitement inclus dans le fichier de texte de spécification rapide. Ils ont été dupliqués de la France selon des commentaires non structurés contre cette entrée. Exemple IBANS a ensuite été fait à des fins illustratives en modifiant simplement le préfixe du pays sans régénérer les sommes de contrôle. Les exemples Iban inclus pour ces territoires devraient désormais être corrects.
Gibraltar et la Hongrie (GI, HU) ont corrigé un bogue où les deux territoires avaient un côlon superflu en ajoutant à leurs expressions régulières après la conversion initiale du document, ce qui provoquait des échecs de validation pour tous les Ibans de ces pays.
Maurice (MU) a corrigé l'attente de la longueur d'Iban de 31 à 30.
L'exemple de Suède (SE) Iban avait été modifié manuellement à partir de l'exemple de spécification Iban au début du développement et n'a pas réussi la somme de contrôle. L'exemple officiel d'Iban a été restauré.
La Tunisie (TN) a corrigé les chaînes de validation incorrectes causées par un bogue dans la conversion de documents initiaux (spécificateur de format Iban à la fonction de conversion d'expression régulière).
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 );
L'utilisation de l'OO est découragée car il existe une tendance actuelle à surutiliser le modèle. Cependant, si vous préférez OO PHP, utilisez tous les moyens, utilisez l'emballage orienté objet, décrit ci-dessous.
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 ();
Voyez par vous-même comment notre approche et nos fonctionnalités se comparent favorablement avec toutes ces bibliothèques ...
Langue | Bibliothèque |
---|---|
C# | iban-api |
Java | iban-api-java |
Java | iban4j |
Java | java-iban |
Javascrip | iban.js |
Javascrip | ng-iban |
Objectivec | Iban-helper |
Objectivec | ibanvalidation |
Perler | diverses bibliothèques CPAN |
Python | django-localfravor |
Python | générateur iban |
Rubis | banque |
Rubis | iban-tools |
Rubis | ibandit |
Rubis | ibanizator |
Rubis | iso-iban |