php-iban
、PHP で IBAN (および IIBAN) 銀行口座情報を解析、検証、生成するためのライブラリです。
国コード、チェックサム、BBAN、金融機関または銀行コード、口座番号、固定長の国内システムが使用されている場合は支店/分類コードなど、IBAN のすべての部分を取得できます。口座番号部分、銀行および支店の識別子、上記の一部またはすべてに適用されるかどうかに関係なく、利用可能な場合には、従来の国内チェックサムも取得、検証され、正しく設定される可能性があります。 IBAN 国コードは ISO3166-1 alpha-2 および IANA 形式に変換でき、従属地域の登録機関として機能する親 IBAN 国を照会でき、公式国の通貨 (ISO4217 alpha コード形式)、中央銀行名および中央銀行 URL を照会できます。統合を容易にするためにクエリを実行することもできます。 IBAN は、人間と機械の表現の間で変換される場合があります。 IBAN は、相対的な識別などの特殊な状況では、人間に表示するために難読化される場合があります。さまざまな国のサンプル/テスト IBAN のデータベースが含まれています。最後に、転記ミスによる不正確な IBAN が検出された場合、当初意図した入力に対する高精度の提案を行うことができます。
このパーサーは、SWIFT から入手可能な公式IBAN レジストリの内容に適合する正規表現を使用して構築され、その後、SWIFT の公式仕様のエラーや欠落などの特殊なケースに合わせて手動で修正されました。
その後、初期の適応におけるさまざまな欠陥が修正され、現在のバージョンはかなり正確で信頼性の高い実装になっているはずです。
必要に応じて、欧州銀行基準委員会 (ECBS) の勧告も組み込まれています。
仕様は頻繁に変更されるため、新しいバージョンが最近リリースされた場合は 100% 最新ではない可能性があることに注意してください。ただし、最善を尽くします。現時点では、2020 年 1 月のリリースが最新であると考えられています。 PDF リリース #86。
LGPL に基づいてライセンスされており、商用環境で無料で使用できます。
次の 116 の公式および非公式IBAN 国がサポートされています。
Composer を使用する場合はcomposer require globalcitizen/php-iban
実行するだけで作業を開始できます。伝えられるところによると、(および)はcomposer経由で行われました。
( composer
まだ持っておらず、安全でない方法でインストールしたい場合 (推奨されていませんが便利です) curl -sS https://getcomposer.org/installer | php
またはwget -O- https://getcomposer.org/installer | php
を実行できます。 wget -O- https://getcomposer.org/installer | php
)
次に、 composer.json
ファイルに以下を追加するだけです。
// composer.json
{
"require" : {
"globalcitizen/php-iban" : "4.2.3"
}
}
次に、 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 clone
コマンドを使用します。
# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone [email protected]:globalcitizen/php-iban.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 [email protected]: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 [email protected]:your/project.git
後でプロジェクトでphp-iban
の新しいバージョンを使用したい場合は、次を実行します。
# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m ' Update php-iban submodule '
zip
またはtar.gz
形式で取得します。unzip filename.zip
。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 とIBAN 関連の機能を提供する他の PHP プロジェクトを比較しています。
プロジェクト | リック。 | プロシージャ | ○○ | 始まった | 最新 | 星 | 時計 | フォーク | インストール | 家庭文化 | デプス |
---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | LGPL | ✔ | ✔ | 2009年 | 4.2.3 | 426 | 29 | 104 | ~700万+* | グローバル* | なし |
イバン | マサチューセッツ工科大学 | ✘ | ✔ | 2013年 | 1.3.0 | 50 | 9 | 19 | 178.39k | ドイツ語 | たくさん |
ISOコード | GPL3 | ✘ | ✔ | 2012年 | 2.1.1 | 466 | 22 | 54 | 145k | フランス語 | たくさん |
SepaUtilの | GPL3 | ✘ | ✔ | 2014年 | 1.2.3 | 8 | 4 | 3 | 25k | ドイツ語 | phpunit |
シンフォニー | マサチューセッツ工科大学 | ✘ | ✔ | 2013年 | 3.3.6 | 15k | 1214 | 5.6k | 2,300万以上 | フランス語 | たくさん |
注:
それでは特徴を見ていきましょう。
+ | ISO | イアナ | セパ | ₶ | UO | MT | ノースカロライナ州 | ₴ | CB | は? | レジストリ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116: オープンソースのツールチェーンとドキュメントを含む、エラーが修正された完全な CSV |
イバン | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54: 部分的、ハードコーディングされた、疑わしい出所 |
ISOコード | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66: 部分的、ハードコーディングされた、疑わしい出所 |
SepaUtilの | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89: 部分的、ハードコーディングされた、疑わしい出所 |
シンフォニー | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95: 部分的、ハードコーディングされた、疑わしい出所 |
注記:
XXXXXXXXXXXXXXXX
の代わりにIBAN XXXX XXXX XXXX XXXX
- はるかに合理的です。つまり、コンポーザーのユーザーは明らかに競合ライブラリ (特に Iban) を利用していますが、おそらくコンポーザー ファイルの統合に時間がかかったことが原因ですが、それらのライブラリは多くの場合、本格的な Web フレームワークであるか、依存関係が煩雑で、成熟度が低く、失敗します。フリーソフトウェア財団に敬意を表し、手続き型プログラミングパラダイムをサポートしていない(AbstractProductClassMakerFactories だけでは対応できない場合に備えて)、疑わしいソースからのデータを使用し、互換性のないライセンスを使用する傾向があります。特定の商業用途に使用されており、率直に言って機能が不足しています。
したがって、恐れ知らずのユーザーはphp-iban を選択してください。これは、IBAN および IIBAN 処理に最適な、倫理的、機能的、先進的な、手間の少ないライブラリです。勝つことを選択してください! ;)
公式情報源からの国内 IBAN、BBAN、または国内チェックサム文書の URL をご存知の場合は、問題 #39 と問題 #41 でお知らせください。
フェロー諸島(FO)の銀行は反応せず、私に紹介したデンマーク国立銀行も反応しません。
ルクセンブルク(LU) は、単一のチェックサム システムに準拠していないようです。一部の IBAN はかなり一般的なシステムで検証を行いますが、他の IBAN は検証しないか、他のシステムを使用します。ルクセンブルクには全国的なチェックサム システムがあるという提案は、実際には間違っている可能性があります。ここでいくつかの説明が必要ですが、誰かが公式声明を掘り起こしてくれることを願っています。
モーリタニア(MR) にはデュアル文字チェックサム システムがありますが、この例の IBAN は、予期されるシステムである MOD97-10 と一致しません。以前は、ここでの IBAN は常に「13」チェックサム桁に固定されていましたが、レジストリ v66 では現在は動的になっており、チェックサム システムが変更されたか、少なくとも現在は全国的に緩和されていることが示唆されています。
検索に少し時間を費やしても構わない場合は、ほとんどの国、特に小規模な国に対して、さらにいくつかの IBAN をテストすることもできます...
バージョン4.2.3がリリースされました。
バージョン4.2.2をリリースしました。
バージョン4.2.1がリリースされました。
バージョン4.2.0がリリースされました。
バージョン4.1.1がリリースされました。
バージョン4.1.0がリリースされました。
バージョン4.0.0がリリースされました。
バージョン3.0.3がリリースされました。
バージョン3.0.2がリリースされました。
バージョン3.0.0がリリースされました。
バージョン2.8.2がリリースされました。
バージョン2.8.1がリリースされました。
TL
BBAN 形式の正規表現により、無関係なスペースが削除されました (IBAN 検証には影響しませんでした)。 (@DanyCorbineauBappli に感謝) バージョン2.8.0がリリースされました。
バージョン2.7.5がリリースされました。
バージョン2.7.4がリリースされました。
iban_to_obfsucated_format()
またはObfuscatedFormat()
バージョン2.7.3がリリースされました。
バージョン2.7.2をリリースしました。
バージョン2.7.1がリリースされました。
バージョン2.7.0がリリースされました。
バージョン2.6.9がリリースされました。
SM
) 向けの国別チェックサム実装を追加しました。バージョン2.6.8がリリースされました。
IT
)バージョン2.6.7がリリースされました。
SK
) 向けの国家チェックサム実装を追加しましたバージョン2.6.6がリリースされました。
ini_set
が有効になっていない環境で発生する大量のエラーを修正しましたバージョン2.6.5がリリースされました。
gmp
拡張機能が有効になっている場合の偽の警告を修正しましたバージョン2.6.4がリリースされました。
bcmath
拡張機能に対する誤った依存関係を削除するバージョン2.6.3がリリースされました。
バージョン2.6.2がリリースされました。
バージョン2.6.1がリリースされました。
バージョン2.6.0がリリースされました。
バージョン2.5.9がリリースされました。
バージョン2.5.8がリリースされました。
バージョン2.5.7をリリースしました。
バージョン2.5.6をリリースしました。
バージョン2.5.5がリリースされました。
バージョン2.5.4がリリースされました。
バージョン2.5.3がリリースされました。
バージョン2.5.2がリリースされました。
バージョン2.5.1がリリースされました。
908
) 銀行には、国内チェックサムが壊れた複数のライブ IBAN があるようです。そのため、その銀行の口座のすべての国内チェックサムを無視します。バージョン2.5.0がリリースされました。
INGB
(ING 銀行) の例外を含む01
(スロベニア銀行) の例外を含むutils/example-ibans
の下で維持されており、すでにかなりの数の国に相当する数のエントリが含まれています。これにより、今後の研究が簡素化されるはずです。バージョン2.4.20をリリースしました。
バージョン2.4.19をリリースしました。
バージョン2.4.18をリリースしました。
バージョン2.4.17をリリースしました。
01
) は、特殊なケースとして国内チェックサム スキームを実装していません。スロベニア国内チェックサムの実装に例外が追加されました。バージョン2.4.16をリリースしました。
バージョン2.4.15をリリースしました。
バージョン2.4.14をリリースしました。
バージョン2.4.13をリリースしました。
iban_mistranscription_suggestions()
は、緩やかにフォーマットされた IBAN のような文字列が渡された場合に正しく動作するようになりました。_verhoeff()
が、無効な入力が渡されたときに正しく動作するようになりました。バージョン2.4.12をリリースしました。
バージョン2.4.11をリリースしました。
central_bank_url
およびcentral_bank_name
から、各国の中央銀行名と URL をクエリできるようになりました。次に例を示します。バージョン2.4.10をリリースしました。
currency_iso4217
は、国の公式通貨が ISO4217 アルファ コード形式で保存されます。次に例を示します。バージョン2.4.9がリリースされました。
parent_registrar
IBAN 国の親レジストラ IBAN 国が格納されます。次に例を示します。バージョン2.4.8がリリースされました。
バージョン2.4.7をリリースしました。
バージョン2.4.6がリリースされました。
バージョン2.4.5がリリースされました。
バージョン2.4.4がリリースされました。
バージョン2.4.3がリリースされました。
バージョン2.4.2がリリースされました。
バージョン2.4.1がリリースされました。
バージョン2.4.0がリリースされました。
iban_{set|find|verify}_nationalchecksum()
。現在、ベルギー (BE)、フランス (FR)、スペイン (ES) がサポートされています。あなたの国がサポートされているのを確認したい場合は、問題 #39 と問題 #41 を参照してください。 バージョン2.3.1がリリースされました。
バージョン2.3.0がリリースされました。
バージョン2.2.0がリリースされました。
バージョン2.1.9をリリースしました。
バージョン2.1.8をリリースしました。
バージョン2.1.7をリリースしました。
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をリリースしました。
machine_format_only
検証用に OO ラッパーとドキュメントが更新されました。バージョン2.1.5がリリースされました。
verify_iban()
の追加の厳密なmachine_format_only
モード。バージョン2.1.4がリリースされました。
バージョン2.1.3がリリースされました。
iban_to_human_format()
の動作が修正されました。バージョン2.1.2をリリースしました。既知の非公式 IBAN 国コードはすべて統合されました。このバージョンでは、ドキュメントのマイナーな更新と、報告されているコソボの名前の短縮に加えて、以下が追加されています。
バージョン2.1.1がリリースされました。現在、非公式の IBAN 国コードが統合されており、そのプロセスは継続中です。このバージョンでは以下が追加されます。
バージョン2.1.0がリリースされました。
現在、非公式の IBAN 国コードが統合されており、そのプロセスは継続中です。国が公式の SWIFT 発行レコードであるかどうかを確認するための新しいフラグが作成されました。したがって、次の新しい国が追加されました。
IIBAN (AA) レコードは非公式としてマークされており、 docs/TODO
にリストされている機能は Github の問題に移行され、そのファイルは削除されていることにも注意してください。
バージョン2.0.1がリリースされました。これは、実際のテスト、コンポーザーのサポート、そして最終的に変更に追いついたことを祝うためです。このバージョンは、国に対する変更や追加を含め、現在までのすべてのレジストリ変更を反映した最新のものである必要があります。
バージョン1.6.0がリリースされました。このバージョンには、より多くのレジストリの修正 (欠陥のあるデータを含む新たに追加された地域、サンプル IBAN の不正なチェックサムなど) のほか、テスト ルーチンの強化、ドキュメントの拡張、およびドキュメントの修正が含まれています。すべてのユーザーにアップグレードすることをお勧めします。 Travis CI を使用してテスト スクリプトの実行を自動化し、コミットされたすべてのコードの堅牢性を強化しました。残念ながら、私は Travis がビルド ログを破った正確な時刻 (https://www.traviscistatus.com/incidents/fcllblkclgmb) を選んだため、これには予想よりも時間がかかりました。これは、すべての大騒ぎが何についてだったのかを確認するためです...クラウド コンピューティングが単なるものであることを再度証明しています予期せず物を壊すのに最適です。彼らは物事を隠したいので、文字通りデバッグ出力がまったくなく、私はこれが私のせいだと信じ込まされました。プログラマの皆さん、見よ、それは神秘的な失敗の時代の幕開けだ。
バージョン1.5.0がリリースされました。コードの変更はありませんが、http://packagist.org/ が統合されました。これにより動作が開始されると思います。 packageist を使用している場合は、 composer require globalcitizen/php-iban
実行するだけでプロジェクトにライブラリを追加できるようになりました (方法を教えてくれた @acoulton に感謝します)
バージョン 1.4.9 は、新しい Github ベースのリリース プロセスを使用してリリースされました。これがライブラリを他のソフトウェアにバンドルする人にとって確実なアンカーポイントとなることを願っています。統合を容易にするために、コンポーザーのメタデータ ファイルも提供されています。新しい IBAN レジストリ URL が統合されました。古い SVN タグ/トランク構造を削除しました。
SWIFT URL を IBAN ページに修正しました。転記ミスのサポートを強調しました。
ついに Google がcode.google.com
廃止し、私たちは Github に移行しました。古いtrunk
/ tag
構造 ( svn
から残っている) がクリーンアップされ、このドキュメントが古い wiki 形式からマークダウンに翻訳されると、新しいバージョンが発行されます。
バージョン 1.4.6がリリースされました。
残念ながら、現在 Google では、Google ドライブを使用するにはcode.google.com
プロジェクトが必要です。 Google ドライブを使用しようとしました (新しいアカウントにサインアップし、電子メールの煩わしさを飛び越え、ロボットとして扱われ、愚かで触覚に優しい新しいインターフェイスを学習し、「共有制限を超えています」のような意味のないエラー メッセージが表示されました (新しいアカウントに 290KB のファイルを 2 つ作成するように言われました)、完全に忍耐力を失いました。
したがって、現時点では、代わりにgit
使用してダウンロードする必要があります。近々 php-iban
Github に移行します。最近の Google は本当に迷惑です。Google+ や Google Drive のジャンクのせいで Picasa が台無しになり、Sketchup も注意力の欠如で台無しになってしまいます。彼らは何を考えているのでしょうか。
バージョン 1.4.5がリリースされました。
バージョン 1.4.4がリリースされました。
プロジェクトソースコードリポジトリは、 svn
(UGH)からgit
(Yay!)に切り替えられました。
バージョン1.4.3がリリースされました:
docs/COMEDY-OF-ERRORS
のドキュメントとして、およびレジストリコンバーター内のインラインの両方で、公式のIBANレジストリドキュメントで問題を発行します。バージョン1.4.2がリリースされました:
バージョン1.4.1がリリースされました:
$__disable_iiban_gmp_extension=true;
)バージョン1.4.1はまだ準備されており、いくつかのバグを押しつぶし、レジストリを更新しています...その間、Code Candyブログで紹介されていることに注意してください! http://www.codecandies.com/2012/05/30/no-exceptions/ hoorayドイツのユーモアのセンス!ははは。
バージョン1.4.0がリリースされました:
VERSION
ファイルを追加して、リクエストに応じてソースツリーにハードバージョン情報を含めるようにします。 バージョン1.3.9がリリースされました:
バージョン1.3.8がリリースされました:
バージョン1.3.7がリリースされました:
バージョン1.3.6がリリースされました:
バージョン1.3.5がリリースされました:
バージョン1.3.4がリリースされました:
バージョン1.3.3がリリースされました:
バージョン1.3.2がリリースされました:
バージョン1.3.1がリリースされました:
バージョン1.3.0がリリースされました。このリリースは、誤解エラーの提案サポートを追加します。
バージョン1.2.0がリリースされました。このリリースは、http://tools.ietf.org/html/draft-iiban-01にある現在のIIBANインターネットドラフトによると、インターネット国際銀行口座番号(IIBAN)サポートを追加します。
バージョン1.1.2がリリースされました。これにより、多くのデフォルトのPHPインストールでの展開を簡素化するために、メインライブラリファイルに長いオープンタグが追加されます。
バージョン1.1.1がリリースされました。これにより、新しいOOラッパーの関数呼び出しでタイプミスが修正されます。非OOユーザーはアップグレードする必要はありません。
バージョン1.1.0がリリースされました。このバージョンは、オブジェクト指向のラッパーライブラリと関連する更新をドキュメンテーションおよびテストスクリプトに追加します。既存のユーザーがアップグレードすることは重要ではありません。
バージョン1.0.0がリリースされました。このバージョンには、次の変更が含まれています。
iban_country_is_sepa($iban_country)
の両方でiban_to_human_format($iban)
を使用して、マシン形式を人間形式に変換するためのサポート(4人の文字ごとにスペースを追加するだけです)その月の初め...小さなメンテナンスリリース、重要ではありません。
*現在、http://groups.google.com/group/php-iban-usersメーリングリストがあります。フィードバック、クエリ、または提案をお気軽に投稿してください。ライブラリの使用方法を知りたいと思います。これまで、このプロジェクトは400を超えるダウンロードに達し、1日に複数の新しいユーザーがいることが強くなっています。これは、専門のライブラリのためのかなり良いショーです!
*バージョン12がリリースされました。レジストリファイルは、一部はユーザーレポートの結果として、およびバージョン11に対して自動テストを実行している間に発見された問題の結果として、一部が改善されました。
修正されたヘッダー行2列は、タイトル( bban_length
およびiban_length
)には表されませんでした。彼らは今追加されています。
フランスの領土(PF、TF、YT、NC、PM、WFのレジストリエントリへの修正フランスの領土は、Swift仕様TextFileに明示的に含まれていません。彼らは、そのエントリに対する構造化されていないコメントに従ってフランスから複製されました。その後、イバンの例は、チェックサムを再生せずに国の接頭辞を変更するだけで、説明のために作成されました。これらの領土に含まれているIBANの例は、今では正しいものでなければなりません。
ジブラルタルとハンガリー(GI、HU)は、両方の地域が最初の文書変換の後に正規表現に余分なコロンを追加したバグを修正しました。
モーリシャス(MU)は、31〜30にIBANの長さの期待を修正しました。
スウェーデン(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 );
# 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 );
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 ();
# 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 ();
私たちのアプローチと機能がこれらすべてのライブラリとどのように好意的に比較されるかを自分で見てください...
言語 | 図書館 |
---|---|
C# | Iban-api-net |
ジャワ | Iban-api-java |
ジャワ | iban4j |
ジャワ | Java-Iban |
JavaScript | iban.js |
JavaScript | ng-iban |
目的C | iban-helper |
目的C | ibanvalidation |
Perl | さまざまなCPANライブラリ |
パイソン | Django-localflavor |
パイソン | Iban-Generator |
ルビー | 銀行 |
ルビー | iban-tools |
ルビー | ibandit |
ルビー | ibanizator |
ルビー | ISO-IBAN |