oguzcabuk07/php-iban

php-iban 是一个用于解析和验证 IBAN(以及 IIBAN)银行账户信息的库。

v3.0.1 2021-05-28 13:33 UTC

README

php-iban 是一个用于在 PHP 中解析、验证和生成 IBAN(以及 IIBAN)银行账户信息的库。

Build Status Latest Stable Version License

可以检索 IBAN 的所有部分,包括国家代码、校验和、BBAN、金融机构或银行代码、账户号码,以及在固定长度国家系统中使用的分支/排序代码。如果适用,还可以检索、验证并正确设置遗留的国家校验和,无论它们适用于账户号码部分、银行和分支标识符,还是上述部分或全部。可以将 IBAN 国家代码转换为 ISO3166-1 alpha-2 和 IANA 格式,可以查询作为从属领土注册机构的父级 IBAN 国家,还可以查询官方国家货币(ISO4217 alpha 代码格式)、央行名称和央行 URL 以简化集成。IBAN 可以在人类和机器表示之间进行转换。最后,当检测到错误的 IBAN 并且是由于误写错误时,可以提供高度准确的原意输入建议。

在以下 PHP 版本上进行了测试:PHP 5.3 PHP 5.4 PHP 5.5 PHP 5.6 PHP 7.0 以及 HHVM 和夜间版本。

解析器使用正则表达式构建,以适应从 SWIFT 在 https://www.swift.com/node/11971 提供的 官方 IBAN 注册内容,然后仅手动修改特殊案例,例如 SWIFT 官方规范中的错误和遗漏

自那时起,已经纠正了初始适应的许多缺陷,并且当前版本应该是一个相当正确和可靠的实现。

在适当的情况下,还纳入了 欧洲银行标准委员会 (ECBS) 的建议。

请注意,由于规范经常更新,如果最近发布了新版本,则可能不是100%最新的 - 尽管如此,我会尽我最大的努力。我们目前认为与2016年4月发布的版本保持最新,即PDF版本#65。

在LGPL许可下,它可以在商业环境中免费使用。

支持的国家

以下99个官方和非官方的IBAN国家受到支持。

  • 阿尔巴尼亚(AL)
  • 阿尔及利亚(DZ)
  • 安道尔(AD)
  • 安哥拉(AO)
  • 奥地利(AT)
  • 阿塞拜疆(AZ)
  • 巴林(BH)
  • 比利时(BE)
  • 贝宁(BJ)
  • 波斯尼亚和黑塞哥维那(BA)
  • 巴西(BR)
  • 英属维尔京群岛(VG)
  • 保加利亚(BG)
  • 布基纳法索(BF)
  • 布隆迪(BI)
  • 喀麦隆(CM)
  • 佛得角(CV)
  • 哥斯达黎加(CR)
  • 科特迪瓦(CI)
  • 克罗地亚(HR)
  • 塞浦路斯(CY)
  • 捷克共和国(CZ)
  • 丹麦(DK)
  • 法罗群岛(FO)
  • 格陵兰(GL)
  • 多米尼加共和国(DO)
  • 爱沙尼亚(EE)
  • 芬兰(FI)
  • 奥兰群岛(AX)
  • 法国(FR)
  • 法属圭亚那(GF)
  • 法属波利尼西亚(PF)
  • 法属南半球和南极领地(TF)
  • 瓜德罗普(GP)
  • 马提尼克(MQ)
  • 马约特(YT)
  • 新喀里多尼亚(NC)
  • 留尼汪(RE)
  • 圣巴泰勒米岛(BL)
  • 圣马丁(法方部分)(MF)
  • 圣皮埃尔和密克隆(PM)
  • 瓦利斯和富图纳(WF)
  • 格鲁吉亚(GE)
  • 德国(DE)
  • 直布罗陀(GI)
  • 希腊(GR)
  • 危地马拉(GT)
  • 匈牙利(HU)
  • 冰岛(IS)
  • IIBAN(互联网)(AA)
  • 伊朗(IR)
  • 爱尔兰(IE)
  • 以色列(IL)
  • 意大利(IT)
  • 约旦(JO)
  • 哈萨克斯坦(KZ)
  • 科索沃(XK)
  • 科威特(KW)
  • 拉脱维亚(LV)
  • 黎巴嫩(LB)
  • 列支敦士登(LI)
  • 立陶宛(LT)
  • 卢森堡(LU)
  • 马其顿(MK)
  • 马达加斯加(MG)
  • 马里(ML)
  • 马耳他(MT)
  • 毛里塔尼亚(MR)
  • 毛里求斯(MU)
  • 摩尔多瓦(MD)
  • 摩纳哥(MC)
  • 黑山(ME)
  • 莫桑比克(MZ)
  • 荷兰(NL)
  • 挪威(NO)
  • 巴基斯坦(PK)
  • 巴勒斯坦(PS)
  • 波兰(PL)
  • 葡萄牙(PT)
  • 卡塔尔(QA)
  • 罗马尼亚(RO)
  • 圣卢西亚(LC)
  • 圣马力诺(SM)
  • 圣多美和普林西比(ST)
  • 沙特阿拉伯(SA)
  • 塞内加尔(SN)
  • 塞尔维亚(RS)
  • 塞舌尔(SC)
  • 斯洛伐克(SK)
  • 斯洛文尼亚(SI)
  • 西班牙(ES)
  • 瑞典(SE)
  • 瑞士(CH)
  • 东帝汶(TL)
  • 突尼斯(TN)
  • 土耳其(TR)
  • 乌克兰(UA)
  • 阿拉伯联合酋长国(AE)
  • 英国(GB)

通过composer安装

如果您使用composer,只需运行composer require globalcitizen/php-iban即可开始。据说Daily Downloads(以及Monthly Downloads)是通过composer完成的。

(如果您还没有composer,并且希望以不安全的方式安装它(不推荐,但方便),可以运行curl -sS https://getcomposer.org/installer | phpwget -O- https://getcomposer.org/installer | php

然后,只需将以下内容添加到您的composer.json文件中

// composer.json
{
    "require": {
        "globalcitizen/php-iban": "2.5.5"
    }
}

然后,您可以通过在包含您的composer.json文件的目录中运行composer的update命令来安装新的依赖项

# 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

您可以在Packagist上查看这个库:查看库

通过git安装

对于常规安装,使用git clone命令

# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone git@github.com:globalcitizen/php-iban.git

通过git子模块安装

或者,将php-iban库嵌入到您自己的git管理的仓库中,并指定特定版本号,这样可以在保持依赖其功能的大型系统的同时,以可预测的方式更新版本

# 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'

然后,当第一次检出带有子模块的git项目时,通常需要执行几个额外步骤

# check out your project as normal
$ git clone git@your-server.com:your/project.git
# initialize submodules
$ git submodule init
# update submodules
$ git submodule update

要跳过这些步骤,在检出时将--recursive参数添加到git clone

# check out your project, initialize and update all submodules
$ git clone --recursive git@your-server.com:your/project.git

如果您后来希望项目使用php-iban的新版本,请运行

# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m 'Update php-iban submodule'

手动安装

  1. 我们的GitHub发布页面获取最新发布版本,格式为ziptar.gz
  2. 使用您喜欢的归档工具提取库,例如在Unix-like平台上使用unzip filename.zip
  3. 根据库相对于源代码的位置编写代码,以依赖该库。例如,如果您希望从父目录的子目录libraries/php-iban包含php-iban,可以使用以下require_once()语句
<?php
require_once(dirname(__FILE__) . '/../libraries/php-iban/php-iban.php');
# ... your code utilizing php-iban
?>

PHP IBAN库比较

以下表格根据一般项目信息和支持的编程范式,将php-iban与其他提供IBAN相关功能的PHP项目进行比较。

备注

  • php-iban的原始下载记录托管在Google Code上,现在已经丢失。在GitHub上建立发布流程之前,我们只是假设人们会下载代码...所以我们真的不确定有多少安装,但这是一个合理的猜测。此库还支持Dolibarr ERP & CRMadm-gravity-ibancommerce_sepaIBAN Validator for Drupal,以及PHP SEPA XML类。
  • php-iban的作者是一位在中国大陆出生的澳大利亚/新西兰/德国公民,曾经也在美国、英国和许多亚洲国家工作和银行业务。
  • IsoCodes和SepaUtil的项目覆盖了除IBAN以外的标准,因此应考虑其流行度。(本质上,只有一个直接竞争的库,即Iban)

现在让我们看看功能。

注意

  • +表示能够以程序方式创建校验和准确的潜在IBAN。作者认为,没有IIBAN支持(即授权)的生成功能除了在一次性迁移中可能有用外,都是可疑的。(另见下文NC)
  • ISO表示能够将IBAN国家代码和ISO3166-1 alpha-2国家代码之间进行转换
  • IANA表示能够将IBAN国家代码和IANA国家代码之间进行转换(例如,'GB'到'.uk'和反之亦然)
  • SEPA表示能够检查特定的IBAN国家是否是单一欧元支付区(SEPA)的成员
  • 描述了对IIBAN的支持,这是由私人实体(如加密货币交易所)提出的开放提议,用于分散化金融端点生成,同时保持与新兴IBAN系统的兼容性。这个系统已被像Kraken这样的主要加密货币交易所采用。
  • UO 指的是对那些IBAN格式已被主要金融机构以非正式使用方式公布但不是官方SWIFT发布的注册条目的非官方国家的支持。
  • MT 指的是误转录支持:自动检测用户在转录IBAN时可能想表达的内容的能力,例如那些手写或以令人困惑的字体打印的,例如将 'L' 写成 'I' 或 '1',反之亦然。
  • NC 指的是国家校验和支持:验证并(如有必要)设置和提取BBAN国家校验和部分的能力,对于提供预IBAN国家校验和算法的国家。
  • 指的是对查询IBAN国家的官方国家货币的ISO4217代码的支持。
  • CB 指的是对查询IBAN国家中央银行名称和URL的支持。
  • H? 指的是对人类、空格或表示变体IBAN的输入和输出的支持,即用 IBAN XXXX XXXX XXXX XXXX 代替 XXXXXXXXXXXXXXXX,更为合理。

简而言之,尽管composer用户显然跳上了竞争对手的库(尤其是Iban),这可能是由于我们集成composer文件所花费的时间,但这些库通常是完整的Web框架或依赖性沉重,不够成熟,未能向自由软件基金会致意,不支持过程式编程范式(当AbstractProductClassMakerFactories不够用时),使用可疑来源的数据,倾向于使用与某些商业用途不兼容的许可证,并且坦率地说,功能不足。

因此,无畏的用户 ... 选择php-iban:IBAN和IIBAN处理的道德、功能、前瞻性、低压力库的选择。 选择胜利! ;)

需要您的帮助

  • 正在继续工作,以提供主要更新以包含字符串国际化。翻译者将很快得到赞赏。

  • 如果您知道来自官方来源的 国家IBAN、BBAN或国家校验和文档 的URL,请通过 问题 #39问题 #41 通知我们。

  • 法罗群岛 (FO) 银行没有响应,丹麦国家银行也没有响应,它曾将我引荐给他们。

  • 意大利 (IT) 有一个我们需要帮助破解的定制校验和系统。请注意,这并不是 意大利税务代码卡

  • 卢森堡 (LU) 似乎不符合任何单一的校验和系统。虽然一些IBAN确实与合理常见的系统进行校验,但其他则不行或使用其他系统。实际上,卢森堡有一个国家校验和系统的建议可能是错误的。我们需要对此进行澄清,希望有人能挖出官方声明。

  • 毛里塔尼亚 (MR) 有一个双字符校验和系统,但我们的示例IBAN与MOD97-10不匹配,这将是预期的系统。

  • 圣马力诺 (SM) 有一个未知算法的字母校验和。

  • 如果您愿意花时间搜索,我们还需要更多国家的测试IBAN,特别是较小的国家...

新闻:2016年4月

版本 2.5.5 已发布。

  • 更新以符合最新版(2016年4月,版本 65)的注册发布
  • 更正了塞舌尔(SC)的账户格式,允许使用字母字符(以前仅限数字)

新闻:2016年3月

版本 2.5.4 已发布。

  • 更新以符合最新版(2016年3月,版本 64)的注册发布
  • 添加了塞舌尔(SC)
  • 其他三个更改显然纠正了我们在记录摄入和测试期间已经发现的注册错误

版本 2.5.3 已发布。

新闻:2016 年 2 月

版本 2.5.2 已发布。

  • 测试库更新,用于验证示例 IBAN 集合。

版本 2.5.1 已发布。

  • 塞尔维亚(RS)的“Narodna banka Srbije”(代码 908)银行似乎有多个活期 IBAN,其国家校验和损坏,因此我们忽略该银行的所有国家校验和。

版本 2.5.0 已发布。

  • 鼓励所有用户升级;此版本被视为长期稳定。
  • 在 2.4.x 系列中添加的以下国家校验和方案现在已包括并得到良好验证,同时已删除无效的假设
  • 比利时(BE)
  • 西班牙(ES)
  • 摩纳哥(MC)
  • 法国(FR)
  • 挪威(NO)
  • 黑山(ME)
  • 马其顿(MK)
  • 荷兰(NL)- 包括对 INGB(ING 银行)的例外,该银行已放弃原始校验和
  • 葡萄牙(PT)
  • 塞尔维亚(RS)
  • 斯洛文尼亚(SI)- 包括对 01(斯洛文尼亚银行)的例外,该银行不遵守校验和
  • 东帝汶(TL)
  • 此外,在 utils/example-ibans 下维护了一个测试 IBAN 库,其中包含许多国家的多个条目。这应该会简化未来的研究。
  • 记录了 改进误转录错误纠正建议功能的想法

版本 2.4.20 已发布。

  • 另一个基于某些国家进一步现实测试 IBAN 的错误修复版本
  • 移除波斯尼亚(BA)国家校验和支持

版本 2.4.19 已发布。

  • 另一个基于某些国家进一步现实测试 IBAN 的错误修复版本
  • 移除芬兰(FI)国家校验和支持

版本 2.4.18 已发布。

  • 另一个基于某些国家进一步现实测试 IBAN 的错误修复版本
  • 移除波兰(PL)国家校验和支持

版本 2.4.17 已发布。

  • 斯洛文尼亚(SI)的斯洛文尼亚银行(银行代码 01)不实施国家校验和方案,作为一个特殊情况。已添加到斯洛文尼亚国家校验和实现中的例外。

版本 2.4.16 已发布。

  • 另一个基于某些国家进一步现实测试 IBAN 的错误修复版本
  • 移除瑞典(SE)国家校验和支持
  • 我现在正在实施一条新规定,即如果国家校验和未在 10+ 个现实世界 IBAN 上进行测试,最好是 20+ 个机构范围内的测试,则它不会被提交。这意味着在没有进行超出网络浏览的研究之前,将无法添加小国。

版本 2.4.15 已发布。

  • 荷兰(NL)银行“INGB”不再使用国家校验和方案,并被豁免检查。这标志着我们第一个针对特定银行的校验和功能。

版本 2.4.14 已发布。

  • 另一个基于某些国家进一步现实测试 IBAN 的错误修复版本
  • 移除爱沙尼亚(EE)国家校验支持
  • 移除匈牙利(HU)国家校验支持

版本 2.4.13 已发布。

  • 这次发布主要关于错误修复,在花费大量时间收集在线 IBAN 并用于进一步测试后。
  • 经过从互联网收集的 IBAN 的额外测试,突尼斯(TN)国家校验支持已被移除,发现其不正确。逆向工程的风险!
  • 其他一些错误修复
  • 函数 iban_mistranscription_suggestions() 现在在传入宽松格式的类似 IBAN 字符串时表现正确
  • 支持某些国家校验实现的校验算法 _verhoeff() 现在在传入无效输入时表现正确

版本 2.4.12 已发布。

  • 添加突尼斯(TN)国家校验支持。

版本 2.4.11 已发布。

  • 现在可以通过新的注册字段 central_bank_urlcentral_bank_name 查询每个国家的央行名称和 URL,例如
  • 新喀里多尼亚(NC)的央行是 '海外发行机构(海外发行机构)',其网址为 http://www.ieom.fr/
  • 英属维尔京群岛(BV)的央行是 '英属维尔京群岛金融服务委员会',其网址为 http://www.bvifsc.vg/
  • IIBAN(互联网)(AA)没有央行。

版本 2.4.10 已发布。

  • 新注册字段 currency_iso4217 以 ISO4217 字母代码格式存储国家的官方货币,例如
  • 冰岛的货币是 ISD
  • 圣皮埃尔和密克隆(PM)的货币是 EUR
  • 瓦利斯和富图纳(WF)的货币是 XPF

版本 2.4.9 已发布。

  • 新注册字段 parent_registrar 存储IBAN国家的父注册机构IBAN国家,例如
  • 奥兰群岛(AX)的父注册机构是芬兰(FI)
  • 法罗群岛(FO)的父注册机构是丹麦(DK)
  • 新喀里多尼亚(NC)的父注册机构是法国(FR)

版本 2.4.8 已发布。

  • 摩纳哥(MC)国家校验支持已添加。

版本 2.4.7 已发布。

  • 荷兰(NL)国家校验支持已添加。

版本 2.4.6 已发布。

  • 波兰(PL)国家校验支持已添加。

版本 2.4.5 已发布。

  • 爱沙尼亚(EE)国家校验支持已添加。
  • 芬兰(FI)国家校验支持已添加。
  • 马其顿(MK)国家校验支持已添加。
  • 黑山(ME)国家校验支持已添加。
  • 挪威(NO)国家校验支持已添加。
  • 塞尔维亚(RS)国家校验支持已添加。
  • 斯洛文尼亚(SI)国家校验支持已添加。
  • 瑞典(SE)国家校验支持已添加。

版本 2.4.4 已发布。

  • 增加了葡萄牙(PT)的国家校验和支持。

版本 2.4.3 已发布。

  • 增加了匈牙利(HU)的国家校验和支持。

版本 2.4.2 已发布。

  • 增加了阿尔巴尼亚(AL)的国家校验和支持。
  • 增加了东帝汶(TL)的国家校验和支持。

版本 2.4.1 已发布。

  • 增加了波斯尼亚(BA)的国家校验和支持。

版本 2.4.0 已发布。

  • 现在可以使用新的函数 iban_{set|find|verify}_nationalchecksum() 及其OO包装器等效函数来确定、验证和设置某些国家正确的国家校验和。目前支持比利时(BE)、法国(FR)和西班牙(ES)。如果您想看到您的国家被支持,请参阅 问题 #39问题 #41

新闻:2016年1月

版本 2.3.1 已发布。

  • 修复了波斯尼亚IANA代码粘贴错误。
  • 为新的国家函数添加了额外的测试。

版本 2.3.0 已发布。

  • 现在所有IBAN国家记录都可以与相应的IANAISO3166-1 alpha-2 码进行交叉引用,如果可用的话。

版本 2.2.0 已发布。

  • 与最新的SEPA会员名单完全一致。(为2016年添加了新会员,安道尔)
  • 与最新的SWIFT IBAN注册PDF完全一致。
  • 自2.1.0以来进行了许多修复和新功能的添加。
  • 鼓励所有用户进行升级。

版本 2.1.9 已发布。

  • 更新示例字段,尝试包括SWIFT IBAN注册PDF版本#63中的可能内容。在这个发布过程中仍存在一些重大问题

版本 2.1.8 已发布。

  • 增加了比利时的国家BBAN校验和偏移数据。

版本 2.1.7 已发布。

  • 将国家BBAN校验和偏移数据添加到注册表中。这可以通过新函数 iban_get_nationalchecksum_part()iban_country_get_nationalchecksum_start_offset()iban_country_get_nationalchecksum_stop_offset() 以及它们的OO包装器等效函数 $myIban->NationalChecksum()$myCountry->NationalChecksumStartOffset()$mycountry->NationalChecksumStopOffset() 来查询。测试和文档已更新。如果您了解国家校验和算法,请帮忙在 问题 #39 上提供帮助。

版本 2.1.6 已发布。

  • 更新了OO包装器和文档,以支持新的严格 machine_format_only 验证。

版本 2.1.5 已发布。

  • verify_iban() 添加了额外的严格 machine_format_only 模式以关闭 问题 #22

版本 2.1.4 已发布。

  • 使用 php4+ 内置功能简化了一个函数。

版本 2.1.3 已发布。

  • 当输入已包含空格时,修复了 iban_to_human_format() 的行为。
  • 现在在成功执行程序性测试后执行基于OO的测试。
  • 现在在主测试之后执行一个额外的测试库,用于测试通用函数中的边缘情况行为。

版本 2.1.2 已发布。现在已集成所有已知的非官方 IBAN 国家代码。此外,还进行了少量文档更新,缩短了科索沃的名称,本版本增加了

  • 科特迪瓦 (CI)
  • 马达加斯加 (MG)
  • 马里 (ML)
  • 莫桑比克 (MZ)
  • 塞内加尔 (SN)
  • 乌克兰 (UA)

版本 2.1.1 已发布。目前正在集成非官方 IBAN 国家代码,该过程仍在进行中。本版本增加了

  • 布基纳法索 (BF)
  • 布隆迪 (BI)
  • 喀麦隆 (CM)
  • 佛得角 (CV)
  • 伊朗 (IR)

版本 2.1.0 已发布。
目前正在集成非官方 IBAN 国家代码,该过程仍在进行中。创建了一个新标志来检查一个国家是否是官方的、SWIFT-发行的记录。因此,以下新国家已被添加。

  • 阿尔及利亚 (DZ)
  • 安哥拉 (AO)
  • 贝宁 (BJ)

请注意,IIBAN (AA) 记录已被标记为非官方,docs/TODO 中列出的功能已迁移到 Github 问题,并删除了该文件。

版本 2.0.1 已发布。这是为了庆祝真正的测试、composer 支持,以及最终赶上变化。本版本应该与至今的所有注册变化保持最新,包括对国家或地区的更改或添加

  • IIBAN (AA)
  • 巴西(BR)
  • 哥斯达黎加(CR)
  • 哈萨克斯坦(KZ)
  • 科索沃(XK)
  • 科威特(KW)
  • 圣巴泰勒米 (BL)
  • 圣卢西亚(LC)
  • 圣马丁(法方部分)(MF)
  • 圣多美和普林西比 (ST)
  • 东帝汶 (TL)
  • 土耳其(TR)

版本 1.6.0 已发布。本版本具有更多注册修正(新添加的数据错误的领土、样本 IBAN 中的坏校验和等)以及增强的测试例程、扩展的文档和修正的文档。建议所有用户升级。我们现在使用 Travis CI 自动执行测试脚本,为所有提交的代码提供额外的鲁棒性。这比预期的花费了更长的时间,因为不幸的是,我选择了 Travis 正好打破他们的构建日志的时间 - https://www.traviscistatus.com/incidents/fcllblkclgmb - 来看看所有这些嘈杂的事情是什么... 再次证明云计算对于意外破坏事物真是太好了。因为他们想隐藏东西,实际上没有任何调试输出,我差点认为是我的错。程序员们,看吧:这是神秘失败的曙光。

版本 1.5.0 已发布。代码没有变化,但现在我们有了 https://packagist.org.cn/ 集成,希望这能触发它开始工作。如果您使用 Packagist,现在只需运行 composer require globalcitizen/php-iban 就可以将库添加到您的项目中(感谢 @acoulton 指明方向)

版本 1.4.9 已使用基于 Github 的新发布流程发布。希望这为那些将库与其他软件捆绑在一起的人提供了一个稳固的锚点。我们还提供了一个贡献的 composer 元数据文件,以简化集成。集成了新的 IBAN 注册表 URL。删除了旧的 SVN 标签/分支结构。

新闻:2015 年 7 月

更正了 SWIFT URL 到 IBAN 页面。强调了误转录错误支持。

新闻:2015 年 3 月

最后,谷歌杀死了 code.google.com,我们已迁移到 Github!一旦清理了旧的 trunk/tag 结构(来自 svn 的遗留问题),并将此文档从旧 wiki 格式转换为 markdown 格式,将发布新版本。

新闻:2014 年 6 月

版本 1.4.6 已发布

  • 修复了约旦和卡塔尔的错误。结果发现它们都有损坏的 TXT 注册表条目,PDF 条目不同,PDF 是正确的(熟悉的故事)。
  • 一些进一步的改进。

不幸的是,现在谷歌要求 code.google.com 项目使用 Google Drive。我试图使用 Google Drive(注册新账户,跳过电子邮件的障碍,被当作机器人对待,学习愚蠢的新亲和界面,得到无意义的错误消息,如 '您的共享限制已超过'(在告诉我创建的新账户上,有 2x290KB 的文件),我完全失去了耐心。

因此,目前您只能使用 git 下载。我将很快将 php-iban 迁移到 Github。谷歌最近真的很让人头疼,因为所有这些 Google+ 和 Google Drive 的垃圾,破坏了 Picasa,由于缺乏关注而破坏了 Sketchup 等。他们在想什么?

新闻:2014 年 3 月

版本 1.4.5 已发布

  • 添加了约旦和卡塔尔
  • 对文档和支持脚本的细微更改。

版本 1.4.4 已发布

  • 修复克罗地亚(HR)的 SEPA 状态
  • 基于 https://en.wikipedia.org/wiki/Single_Euro_Payments_Area 的后续 SEPA 状态审计发现了一些其他状态问题(此信息不包含在官方 IBAN 注册表中)
    • 法罗群岛、格陵兰、圣马力诺的状态已修复。其他一切都似乎很顺利。

项目源代码库已从 svn(讨厌)切换到 git(太好了!).

  • 这将使未来的更改不那么痛苦。

新闻:2013 年 9 月

版本 1.4.3 已发布

  • 添加了奥兰群岛(AX),芬兰(FI)的一部分,仅在芬兰的 SEPA 状态字段中进行了文档化,没有在 IBAN 注册表文档的任何其他地方提到。
    • 考虑但不添加类似的海峡群岛(CI)或休达/梅利利亚(EA)——两者都是西班牙(ES)的次要领土——由于缺乏任何使用证据。
  • 由于注册值与自由文本混合,修复了西班牙(ES)、芬兰(FI)、葡萄牙(PT)的 SEPA 状态。
    • docs/COMEDY-OF-ERRORS 中以及注册转换器中记录此问题以及与官方 IBAN 注册表文档的其他问题,作为文档。
  • 将巴勒斯坦的人名国家更改为更好地反映当前注册表文档(删除了“国家”,因此只呈现“巴勒斯坦”)
  • 更新注册表中上一版本中的过期最后修改日期

新闻:2013年8月

版本1.4.2已发布

  • 解决编号#19问题:由于解析器错误,法国/法国领土的SEPA状态不正确。(感谢报告者)

版本1.4.1已发布

  • 请求
    • 根据分支ID和银行ID部分的存在与否,智能计算BBAN的'账户'部分(根据请求,适用于德国/奥地利。之前这已被请求用于荷兰,但是这个解决方案应该会解决所有人的结果!)
    • 将'IIBAN'前缀移除支持添加到机器格式转换函数中
    • 添加gmp禁用标志($__disable_iiban_gmp_extension=true;
  • 在某些PHP引擎配置上静默警告
  • 更新巴西记录(较小调整)
  • 不再以.txt格式重新分发IBAN注册表
  • 改进内联文档

新闻:2013年6月

版本1.4.1仍在准备中,修复了一些错误并更新了注册表...同时,我发现我们的项目被Code Candy博客特写了! http://www.codecandies.com/2012/05/30/no-exceptions/ 哈哈,德国人的幽默感太棒了!哈哈哈。

新闻:2013年3月

版本1.4.0已发布

  • 解决了一个影响最近几个版本的问题,该问题在尝试为校验无效的IBAN生成正确的校验和时出现。
  • 根据请求添加VERSION文件,以便在源树中包含硬版本信息。

新闻:2013年2月

版本1.3.9已发布

  • 解决了1.3.7中报告的问题,重新启用了更高效的PHP gmp库基于校验和的代码(感谢rpkamp)

版本1.3.8已发布

  • 已报告在使用基于新gmp库的MOD97例程的某些IBAN的校验和处理中的错误(仅影响已启用php-iban 1.3.7和PHP gmp库的用户)。作为一个立即的解决方案,1.3.8已发布,包括以下更改:**来自1.3.6的代码**;来自1.3.7的注册表

版本1.3.7已发布

  • 添加巴西
  • 添加两个新的法国海外领地
  • 将'Moldova'减少到规范化简短形式名称
  • 在IBAN验证例程中实现了大型CPU效率提升(如果安装了PHP gmp扩展,则为16倍,否则为5倍。特别感谢算法贡献者Chris以及维护德语精确性和效率传统的工程师们!唉,我只是部分德国人,真不好意思...)
  • 一些内部/工具更新
  • 添加了一些错误喜剧元素

新闻:2012年11月

版本1.3.6已发布

  • 更新IIBAN格式以符合最新的IETF草案。

新闻:2012年10月

版本1.3.5已发布

  • 在人类到机器格式转换函数中解决了对低字母字符(即非ECBS兼容)支持不足的问题。

版本1.3.4已发布

  • 添加了对最新ECBS建议的引用,并将它们包含在文档中。

版本1.3.3已发布

  • 非常小的效率提升。

新闻:2012年9月

版本1.3.2已发布

  • 注册表更新
    • 添加了巴勒斯坦领土
    • Moldova修复了其格式
    • 芬兰修复了其银行标识符位置
    • 沙特阿拉伯 - 删除示例中的多余尾随空格

新闻:2012年6月

版本1.3.1已发布

  • 添加了新的国家
    • 阿塞拜疆(AZ)
    • 哥斯达黎加(CR)
    • 危地马拉(GT)
    • 摩尔多瓦(MD)
    • 巴基斯坦(PK)
    • 英属维尔京群岛(VG)
  • 一些杂项更新
    • 规范化/简化示例(FI,PT,SA)
    • 规范化/简化人类国家名称(BH,LI,MK)
    • 文档更新

新闻:2011年12月

版本1.3.0已发布。此版本增加了转录错误建议支持。

版本1.2.0已发布。此版本添加了按照当前IIBAN Internet Draft(在http://tools.ietf.org/html/draft-iiban-01)的互联网国际银行账户号码(IIBAN)支持

新闻:2011年9月

版本 1.1.2 已发布。此版本在主库文件中添加了长开标签,以便简化在许多默认PHP安装上的部署。

新闻:2011年8月

版本 1.1.1 已发布。此版本修复了新OO包装中函数调用中的一个拼写错误。非OO用户无需升级。

新闻:2011年7月

版本 1.1.0 已发布。此版本添加了一个面向对象的包装库以及相关文档和测试脚本的更新。对于现有用户来说,升级不是必需的。

版本 1.0.0 已发布。此版本包含以下更改:

  • 支持SEPA标志 ("这个国家是单一欧元支付区成员吗?"),在注册表中以及使用新函数 iban_country_is_sepa($iban_country)
  • 支持占位符将机器格式IBAN转换为人类格式(简单地每四位字符添加一个空格),使用函数 iban_to_human_format($iban)
  • 修复了注册文件中一系列国内示例问题,这些问题是从SWIFT自己的损坏的IBAN注册表中导入的
  • 标准化示例字段,以便更好地在自动环境中使用(奥地利、德国等)
  • 更新了测试代码
  • 增加了大量新文档
  • *重新组织文件布局•
  • 将版本格式改为x.y.z,并与1.0.0版本一起使用subversion 'tags'

本月初... 小维护版本,不是关键。

  • split() 函数替换为 explode(),以防止警告(或在非常新的PHP引擎上出现错误)
  • 解决了在配置为显示警告的PHP环境中,当要验证的IBAN输入不包含有效的IBAN国家代码前缀时将显示警告的问题。(实际上,没有人应该在启用这种警告的生产PHP环境中运行!)

新闻:2011年6月

  • 现在下载量已经超过1000次:考虑到这个项目的特定性,这已经很不错了!
  • 已发布一个 新版本,修复了许多官方注册表的重要更改,并添加了一些新功能。
    • 添加新的法国领地(GF、GP、MQ、RE)。旧规范版本不包括GF、GP、MQ、RE法国领地,只包括PF、TF、YT、NC、PM、WF法国领地。现在已将新领地添加到数据库中。
    • 添加新国家我们欢迎巴林(BH)、多米尼加共和国(DO)、哈萨克斯坦(KZ)、阿拉伯联合酋长国(AE)加入数据库。
    • 格式/示例更新显然有一些小的格式/示例更改,这些更改已整合到现有国家中。
    • 包含修改后的IBAN_Registry.txt在官方IBAN_Registry.txt文件中发现了一些错误和遗漏,即排除了哈萨克斯坦(KZ)以及仅提供了关于科威特(KW)的部分信息,以及这两个国家的PDF规范中的错误。这是SWIFT的错误:他们应该感到羞愧!我怀疑他们最近更换了员工。无论如何,现在与php-iban一起分发的IBAN_Registry.txt版本已解决了这些问题。
    • 修复突尼斯问题奇怪的是,我在今年1月的革命期间访问了突尼斯。对于将突尼斯的IBAN格式弄错,向突尼斯人民道歉!TN59 + 20位是正确的格式。现在已包含在新的注册文件中。
    • 修复阿尔巴尼亚问题更新了阿尔巴尼亚的SWIFT格式信息。(由于使用的是正则表达式,这些更改不会影响验证,因为它们已经正确)
    • 增加和修订文档已向项目添加更多文档。
    • 自动化的IBAN_Registry.txt修复/转换工具 项目中新增了一个名为convert-registry的工具,该工具旨在尽可能自动规范化/修复官方SWIFT .txt规范中存在的问题。请注意,这还不足以得到一个良好的registry.txt文件(php-iban使用的内部格式),因为SWIFT的.txt发布版本排除了PDF规范中的整个国家。此外,PDF规范中目前需要手动解决的还有一些错误。这些错误已在IBAN_Registry.txt文件中解决。

新闻:2009年12月

*我们现在有一个http://groups.google.com/group/php-iban-users邮件列表。请随时发布您的反馈、查询或建议——我们很想知道您如何使用这个库。迄今为止,项目已下载超过400次,并且仍在稳步增长,每天有超过一个新用户——对于一个专业库来说这是一个相当不错的表现!

*已发布版本12。注册文件已得到改进,部分原因是用户报告的问题,部分原因是在对版本11进行自动化测试时发现的问题。

  • 修正的标题行 两个列(bban_lengthiban_length)没有在标题中体现。现在已添加。

  • 修复法国领土的注册条目(PF、TF、YT、NC、PM、WF)法国领土在SWIFT规范文本文件中没有明确包含。它们是根据该条目下的非结构化注释从法国复制的。为说明目的,通过简单地修改国家前缀而没有重新生成校验和,制作了示例IBAN。现在这些领土的IBAN示例应该是正确的。

  • 直布罗陀和匈牙利(GI、HU)修复了一个问题,在文档转换后,这两个领土的正则表达式后面多了一个多余的冒号,这导致这些国家的所有IBAN验证失败。

  • 毛里求斯(MU)将IBAN长度预期从31修正为30。

  • 瑞典(SE)示例IBAN在开发初期手动修改了IBAN规范示例,并且没有通过校验和。现在已恢复了官方IBAN示例。

  • 突尼斯(TN)纠正了由初始文档转换中的错误(IBAN格式说明符到正则表达式的转换函数)引起的验证字符串错误。

文档(程序/推荐)

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);

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 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);

内部函数

# Perform MOD97-10 checksum calculation
$mod97_10 = iban_mod97_10($string);

# Character substitution required for IBAN MOD97-10 checksum validation/generation
$mod97_internal_stuff = iban_checksum_string_replace($s);

文档(面向对象包装/不推荐)

不鼓励使用OO,因为现在有一种过度使用该模式的趋势。然而,如果您更喜欢OO PHP,则可以使用以下描述的面向对象包装。

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();

IBAN国家级函数

# 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();

其他语言的IBAN库

看看我们的方法和功能如何与所有这些库相比...