php-iban
adalah perpustakaan untuk mengurai, memvalidasi, dan menghasilkan informasi rekening bank IBAN (dan IIBAN) dalam PHP.
Semua bagian IBAN dapat diambil, termasuk kode negara, checksum, BBAN, kode lembaga keuangan atau bank, nomor rekening, dan jika sistem nasional dengan panjang tetap digunakan, juga kode cabang/urutan. Checksum nasional lama juga dapat diambil, divalidasi, dan diatur dengan benar, jika tersedia, baik berlaku untuk bagian nomor rekening, pengidentifikasi bank dan cabang, sebagian atau seluruh hal di atas. Kode negara IBAN dapat dikonversi ke format ISO3166-1 alpha-2 dan IANA, negara induk IBAN yang bertindak sebagai registrar untuk wilayah dependen dapat ditanyakan, mata uang nasional resmi (format kode alpha ISO4217), nama bank sentral, dan URL bank sentral mungkin juga ditanyakan untuk memudahkan integrasi. IBAN dapat dikonversi antara representasi manusia dan mesin. IBAN mungkin dikaburkan untuk ditampilkan kepada manusia dalam keadaan khusus seperti identifikasi relatif. Database contoh/uji IBAN dari berbagai negara disertakan. Terakhir, saran yang sangat akurat untuk masukan yang dimaksudkan semula dapat diberikan ketika IBAN yang salah terdeteksi dan disebabkan oleh kesalahan transkripsi.
Parser dibuat menggunakan ekspresi reguler untuk mengadaptasi konten registri IBAN resmi yang tersedia dari SWIFT kemudian dimodifikasi secara manual untuk kasus-kasus khusus seperti kesalahan dan kelalaian dalam spesifikasi resmi SWIFT.
Berbagai kekurangan dalam adaptasi awal telah diperbaiki, dan versi saat ini seharusnya merupakan implementasi yang cukup tepat dan dapat diandalkan.
Jika diperlukan, rekomendasi Komite Standar Perbankan Eropa (ECBS) juga telah dimasukkan.
Harap diingat bahwa karena spesifikasi sering berubah, mungkin tidak 100% mutakhir jika versi baru baru saja dirilis - namun saya melakukan yang terbaik. Saat ini kami dianggap up to date dengan rilis Januari 2020, yaitu. Rilis PDF #86.
Berlisensi di bawah LGPL, gratis untuk digunakan dalam pengaturan komersial.
116 negara IBAN resmi dan tidak resmi berikut ini didukung.
Jika Anda menggunakan composer, Anda cukup menjalankan composer require globalcitizen/php-iban
untuk memulai. Kabarnya (dan ) dilakukan melalui composer.
(Jika Anda belum memiliki composer
dan ingin menginstalnya dengan cara yang tidak aman (tidak disarankan, namun nyaman) Anda dapat menjalankan curl -sS https://getcomposer.org/installer | php
atau wget -O- https://getcomposer.org/installer | php
)
Kemudian tambahkan saja yang berikut ini ke file composer.json
Anda:
// composer.json
{
"require" : {
"globalcitizen/php-iban" : "4.2.3"
}
}
Kemudian, Anda dapat menginstal dependensi baru dengan menjalankan perintah composer
update dari direktori tempat file composer.json
Anda berada:
# 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
Anda dapat melihat perpustakaan ini di Packagist.
Untuk instalasi reguler, gunakan perintah git clone
:
# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone [email protected]:globalcitizen/php-iban.git
Alternatifnya, dengan menyematkan perpustakaan php-iban
di repositori git
-managed Anda sendiri dengan nomor revisi tertentu, sehingga memungkinkan untuk memperbarui versi dengan cara yang dapat diprediksi sambil mempertahankan sistem yang lebih besar yang bergantung pada fungsinya:
# 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 '
Kemudian, saat memeriksa proyek git
dengan submodul untuk pertama kalinya, biasanya Anda perlu melakukan beberapa langkah tambahan:
# check out your project as normal
$ git clone [email protected]:your/project.git
# initialize submodules
$ git submodule init
# update submodules
$ git submodule update
Untuk melewati langkah-langkah ini, tambahkan argumen --recursive
ke git clone
saat memeriksa:
# check out your project, initialize and update all submodules
$ git clone --recursive [email protected]:your/project.git
Jika nanti Anda ingin proyek Anda menggunakan versi php-iban
yang lebih baru, jalankan:
# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m ' Update php-iban submodule '
zip
atau tar.gz
unzip filename.zip
pada platform mirip Unix.php-iban
dari subdirektori direktori induk libraries/php-iban
Anda dapat menggunakan pernyataan require_once() berikut: <?php
require_once ( dirname ( __FILE__ ) . ' /../libraries/php-iban/php-iban.php ' );
# ... your code utilizing php-iban
?>
Tabel berikut membandingkan php-iban dengan proyek PHP lain yang menawarkan fungsionalitas terkait IBAN, berdasarkan informasi umum proyek dan paradigma pemrograman yang didukung.
Proyek | Lik. | Proses | OO | Dimulai | Terbaru | Bintang | Jam tangan | Garpu | Pemasangan | Budaya rumah | Departemen |
---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | LGPL | ✔ | ✔ | 2009 | 4.2.3 | 426 | 29 | 104 | ~7M+* | Global* | tidak ada |
Iban | MIT | ✘ | ✔ | 2013 | 1.3.0 | 50 | 9 | 19 | 178,39k | Jerman | banyak |
IsoCodes | GPL3 | ✘ | ✔ | 2012 | 2.1.1 | 466 | 22 | 54 | 145k | Perancis | banyak |
SepaUtil | GPL3 | ✘ | ✔ | 2014 | 1.2.3 | 8 | 4 | 3 | 25k | Jerman | unit php |
simfoni | MIT | ✘ | ✔ | 2013 | 3.3.6 | 15k | 1214 | 5.6k | 23 juta+ | Perancis | banyak |
Catatan:
Sekarang mari kita lihat fitur-fiturnya.
+ | ISO | IANA | SEPA | ₶ | UO | MT | tidak | ₴ | CB | H? | Registri | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116: CSV lengkap yang telah diperbaiki kesalahannya dengan rantai alat dan dokumentasi sumber terbuka |
Iban | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54: asal parsial, hardcoded, meragukan |
IsoCodes | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66: asal parsial, hardcoded, meragukan |
SepaUtil | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89: asal parsial, hardcoded, meragukan |
simfoni | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95: asal parsial, hardcoded, meragukan |
Catatan:
IBAN XXXX XXXX XXXX XXXX
daripada XXXXXXXXXXXXXXXX
- jauh lebih masuk akal.Singkatnya, meskipun pengguna komposer tampaknya telah menggunakan perpustakaan saingan (khususnya Iban), mungkin karena waktu yang kami perlukan untuk mengintegrasikan file komposer, perpustakaan tersebut sering kali merupakan kerangka web yang lengkap atau membebani ketergantungan, kurang matang, gagal mendukung landasan perangkat lunak bebas, tidak mendukung paradigma pemrograman prosedural (karena abstractProductClassMakerFactories tidak dapat memotongnya), menggunakan data dari sumber yang meragukan, cenderung menggunakan lisensi yang tidak kompatibel dengan penggunaan komersial tertentu, dan sejujurnya kekurangan fitur.
Jadi, pengguna yang tak kenal takut ... pilih php-iban : perpustakaan pilihan yang etis, fungsional, berwawasan ke depan, dan tidak merepotkan untuk pemrosesan IBAN dan IIBAN. Pilih untuk menang! ;)
Jika Anda mengetahui URL dokumentasi IBAN, BBAN, atau checksum nasional nasional dari sumber resmi, harap beri tahu kami di edisi #39 dan edisi #41.
Bank-bank di Kepulauan Faroe (FO) tidak memberikan tanggapan, begitu pula Bank Nasional Denmark yang merujuk saya kepada mereka.
Luksemburg (LU) tampaknya tidak mengikuti sistem checksum tunggal mana pun. Meskipun beberapa IBAN memvalidasi dengan sistem yang cukup umum, yang lain tidak atau menggunakan sistem lain. Pernyataan bahwa Luksemburg memiliki sistem checksum nasional mungkin tidak benar. Perlu klarifikasi disini, semoga ada yang bisa menggali pernyataan resminya.
Mauritania (MR) memiliki sistem checksum karakter ganda tetapi contoh IBAN kami tidak cocok dengan MOD97-10 yang merupakan sistem yang diharapkan. Sebelumnya IBAN di sini selalu ditetapkan pada digit checksum '13', namun pada registri v66 sekarang bersifat dinamis, yang menunjukkan perubahan atau setidaknya sekarang sistem checksum yang dilonggarkan secara nasional.
Jika Anda bersedia meluangkan waktu untuk mencari, kami dapat melakukan beberapa pengujian IBAN lagi untuk sebagian besar negara, terutama negara-negara kecil...
Versi 4.2.3 telah dirilis.
Versi 4.2.2 telah dirilis.
Versi 4.2.1 telah dirilis.
Versi 4.2.0 telah dirilis.
Versi 4.1.1 telah dirilis.
Versi 4.1.0 telah dirilis.
Versi 4.0.0 telah dirilis.
Versi 3.0.3 telah dirilis.
Versi 3.0.2 telah dirilis.
Versi 3.0.0 telah dirilis.
Versi 2.8.2 telah dirilis.
Versi 2.8.1 telah dirilis.
TL
BBAN menghapus spasi asing (tidak memengaruhi validasi IBAN). (Terima kasih kepada @DanyCorbineauBappli) Versi 2.8.0 telah dirilis.
Versi 2.7.5 telah dirilis.
Versi 2.7.4 telah dirilis.
iban_to_obfsucated_format()
atau ObfuscatedFormat()
untuk mengaburkan IBAN untuk skenario keluaran tertentu (seperti identifikasi relatif)Versi 2.7.3 telah dirilis.
Versi 2.7.2 telah dirilis.
Versi 2.7.1 telah dirilis.
Versi 2.7.0 telah dirilis.
Versi 2.6.9 telah dirilis.
SM
)Versi 2.6.8 telah dirilis.
IT
)Versi 2.6.7 telah dirilis.
SK
)Versi 2.6.6 telah dirilis.
ini_set
diaktifkanVersi 2.6.5 telah dirilis.
gmp
diaktifkanVersi 2.6.4 telah dirilis.
bcmath
Versi 2.6.3 telah dirilis.
Versi 2.6.2 telah dirilis.
Versi 2.6.1 telah dirilis.
Versi 2.6.0 telah dirilis.
Versi 2.5.9 telah dirilis.
Versi 2.5.8 telah dirilis.
Versi 2.5.7 telah dirilis.
Versi 2.5.6 telah dirilis.
Versi 2.5.5 telah dirilis.
Versi 2.5.4 telah dirilis.
Versi 2.5.3 telah dirilis.
Versi 2.5.2 telah dirilis.
Versi 2.5.1 telah dirilis.
908
) di Serbia (RS) tampaknya memiliki beberapa IBAN aktif dengan checksum nasional yang rusak, jadi kami mengabaikan semua checksum nasional pada rekening dari bank tersebut.Versi 2.5.0 telah dirilis.
INGB
(ING Bank) yang telah menghilangkan checksum asli01
(Bank of Slovenia) yang tidak menerapkan checksumutils/example-ibans
yang sudah memiliki jumlah entri yang cukup untuk sejumlah negara. Ini harus menyederhanakan penelitian di masa depan.Versi 2.4.20 telah dirilis.
Versi 2.4.19 telah dirilis.
Versi 2.4.18 telah dirilis.
Versi 2.4.17 telah dirilis.
01
di bawah Slovenia (SI)) tidak menerapkan skema checksum nasional, sebagai kasus khusus. Pengecualian telah ditambahkan pada penerapan checksum nasional Slovenia.Versi 2.4.16 telah dirilis.
Versi 2.4.15 telah dirilis.
Versi 2.4.14 telah dirilis.
Versi 2.4.13 telah dirilis.
iban_mistranscription_suggestions()
sekarang berfungsi dengan benar ketika meneruskan string mirip IBAN yang diformat secara longgar_verhoeff()
yang mendukung implementasi checksum nasional tertentu kini berperilaku benar ketika memberikan input yang tidak validVersi 2.4.12 telah dirilis.
Versi 2.4.11 telah dirilis.
central_bank_url
dan central_bank_name
, misalnya:Versi 2.4.10 telah dirilis.
currency_iso4217
menyimpan mata uang resmi negara dalam format kode alfa ISO4217, misalnya:Versi 2.4.9 telah dirilis.
parent_registrar
menyimpan negara IBAN registrar induk dari suatu negara IBAN, misalnya:Versi 2.4.8 telah dirilis.
Versi 2.4.7 telah dirilis.
Versi 2.4.6 telah dirilis.
Versi 2.4.5 telah dirilis.
Versi 2.4.4 telah dirilis.
Versi 2.4.3 telah dirilis.
Versi 2.4.2 telah dirilis.
Versi 2.4.1 telah dirilis.
Versi 2.4.0 telah dirilis.
iban_{set|find|verify}_nationalchecksum()
dan padanan OO-wrappernya. Saat ini Belgia (BE), Perancis (FR) dan Spanyol (ES) didukung. Jika Anda ingin negara Anda didukung, silakan lihat edisi #39 dan edisi #41. Versi 2.3.1 telah dirilis.
Versi 2.3.0 telah dirilis.
Versi 2.2.0 telah dirilis.
Versi 2.1.9 telah dirilis.
Versi 2.1.8 telah dirilis.
Versi 2.1.7 telah dirilis.
iban_get_nationalchecksum_part()
, iban_country_get_nationalchecksum_start_offset()
dan iban_country_get_nationalchecksum_stop_offset()
serta pembungkus OO-nya yang setara $myIban->NationalChecksum()
, $myCountry->NationalChecksumStartOffset()
dan $mycountry->NationalChecksumStopOffset()
. Tes dan dokumentasi diperbarui. Jika Anda mengetahui sesuatu tentang algoritme checksum nasional, silakan membantu pada edisi #39.Versi 2.1.6 telah dirilis.
machine_format_only
baru yang ketat.Versi 2.1.5 telah dirilis.
machine_format_only
tambahan yang ketat untuk verify_iban()
untuk menutup masalah #22.Versi 2.1.4 telah dirilis.
Versi 2.1.3 telah dirilis.
iban_to_human_format()
telah diperbaiki ketika masukan yang diberikan sudah mengandung spasi.Versi 2.1.2 telah dirilis. Semua kode negara IBAN tidak resmi yang diketahui kini terintegrasi. Selain pembaruan dokumentasi kecil dan pemendekan nama Kosovo yang dilaporkan, versi ini menambahkan:
Versi 2.1.1 telah dirilis. Saat ini kode negara IBAN tidak resmi sedang diintegrasikan, dan prosesnya masih berlangsung. Versi ini menambahkan:
Versi 2.1.0 telah dirilis.
Saat ini kode negara IBAN tidak resmi sedang diintegrasikan, dan prosesnya masih berlangsung. Bendera baru telah dibuat untuk memeriksa apakah suatu negara merupakan catatan resmi yang diterbitkan SWIFT atau tidak. Oleh karena itu, negara-negara baru berikut telah ditambahkan.
Perhatikan juga bahwa catatan IIBAN (AA) telah ditandai tidak resmi, dan fitur yang tercantum dalam docs/TODO
telah dimigrasikan ke masalah Github dan file tersebut dihapus.
Versi 2.0.1 telah dirilis. Hal ini untuk merayakan pengujian nyata, dukungan komposer, serta akhirnya mengejar perubahan. Versi ini harus diperbarui dengan semua perubahan registri saat ini, termasuk perubahan atau penambahan negara:
Versi 1.6.0 telah dirilis. Versi ini menampilkan lebih banyak koreksi registri (wilayah yang baru ditambahkan dengan data yang salah, checksum yang buruk di contoh IBAN, dll.) serta rutinitas pengujian yang ditingkatkan, dokumentasi yang diperluas, dan dokumentasi yang diperbaiki. Semua pengguna disarankan untuk melakukan upgrade. Kami sekarang memiliki eksekusi skrip pengujian otomatis dengan Travis CI, untuk memberikan ketahanan tambahan untuk semua kode yang dikomit. Ini memakan waktu lebih lama dari yang diharapkan karena sayangnya saya memilih waktu yang tepat Travis memecahkan log build mereka - https://www.traviscistatus.com/incidents/fcllblkclgmb - untuk melihat apa yang sebenarnya terjadi... membuktikan lagi bahwa komputasi awan itu adil bagus untuk memecahkan sesuatu yang tidak terduga. Karena mereka ingin menyembunyikan sesuatu, sebenarnya tidak ada keluaran debug apa pun, dan saya yakin ini adalah kesalahan saya. Rekan-rekan programmer, lihatlah: ini adalah permulaan zaman kegagalan mistik.
Versi 1.5.0 telah dirilis. Tidak ada perubahan kode, tapi sekarang kami memiliki integrasi http://packagist.org/, semoga ini memicunya untuk mulai bekerja. Jika Anda menggunakan packagist, Anda sekarang dapat menambahkan perpustakaan ke proyek Anda hanya dengan menjalankan composer require globalcitizen/php-iban
(terima kasih kepada @acoulton karena telah menunjukkan caranya)
Versi 1.4.9 telah dirilis menggunakan proses rilis baru berbasis Github. Mudah-mudahan ini memberikan landasan yang kuat bagi mereka yang menggabungkan perpustakaan dengan perangkat lunak lain. Kami juga memiliki file metadata komposer yang dikontribusikan untuk memudahkan integrasi. URL registri IBAN baru terintegrasi. Menghapus tag/struktur batang SVN lama.
URL SWIFT yang diperbaiki ke halaman IBAN. Dukungan kesalahan transkripsi yang ditekankan.
Akhirnya, Google telah mematikan code.google.com
dan kami telah bermigrasi ke Github! Setelah struktur trunk
/ tag
lama (yang tersisa dari svn
) dibersihkan dan dokumen ini diterjemahkan dari format wiki lama ke penurunan harga, versi baru akan diterbitkan.
Versi 1.4.6 telah dirilis:
Sayangnya, Google sekarang memerlukan proyek code.google.com
untuk menggunakan Google Drive. Saya mencoba menggunakan Google Drive (mendaftar untuk akun baru, melewati rintangan email, diperlakukan seperti robot, mempelajari antarmuka baru yang mudah tersinggung dan bodoh, mendapatkan pesan kesalahan yang tidak berarti seperti 'Batas berbagi Anda telah terlampaui' (dengan File 2x290KB di akun baru yang diminta untuk saya buat) dan kehilangan kesabaran sepenuhnya.
Jadi untuk saat ini, Anda hanya perlu mengunduh menggunakan git
saja. Saya akan segera memigrasikan php-iban
ke Github. Google benar-benar menyusahkan akhir-akhir ini, bagaimana dengan semua sampah Google+ dan Google Drive ini, merusak Picasa, merusak Sketchup karena kurangnya perhatian, dll. Apa yang mereka pikirkan?
Versi 1.4.5 telah dirilis:
Versi 1.4.4 telah dirilis:
Repositori Kode Sumber Proyek telah beralih dari svn
(UGH) ke git
(yay!) .
Versi 1.4.3 telah dirilis:
docs/COMEDY-OF-ERRORS
dan inline dalam konverter registri.Versi 1.4.2 telah dirilis:
Versi 1.4.1 telah dirilis:
$__disable_iiban_gmp_extension=true;
)Versi 1.4.1 masih sedang dipersiapkan, meremas beberapa bug dan memperbarui registri ... Sementara itu, telah menjadi perhatian saya bahwa kami telah ditampilkan di blog Code Candy! http://www.codecandies.com/2012/05/30/no-exceptions/ hooray untuk selera humor Jerman! Haha.
Versi 1.4.0 telah dirilis:
VERSION
, untuk memasukkan informasi versi keras di pohon sumber, berdasarkan permintaan. Versi 1.3.9 telah dirilis:
Versi 1.3.8 telah dirilis:
Versi 1.3.7 telah dirilis:
Versi 1.3.6 telah dirilis:
Versi 1.3.5 telah dirilis:
Versi 1.3.4 telah dirilis:
Versi 1.3.3 telah dirilis:
Versi 1.3.2 telah dirilis:
Versi 1.3.1 telah dirilis:
Versi 1.3.0 telah dirilis. Rilis ini menambahkan dukungan kesalahan kesalahan.
Versi 1.2.0 telah dirilis. Rilis ini menambahkan dukungan Internet International Bank Account (IIBAN), sesuai dengan draft internet IIBAN saat ini di http://tools.ietf.org/html/draft-iiban-01
Versi 1.1.2 telah dirilis. Ini menambahkan tag terbuka yang panjang ke file perpustakaan utama untuk menyederhanakan penyebaran pada banyak instalasi PHP default.
Versi 1.1.1 telah dirilis. Ini memperbaiki kesalahan ketik dalam panggilan fungsi di wrapper OO baru. Pengguna non OO tidak perlu meningkatkan.
Versi 1.1.0 telah dirilis. Versi ini menambahkan perpustakaan pembungkus berorientasi objek dan pembaruan terkait ke dokumentasi dan skrip pengujian. Tidak penting bagi pengguna yang ada untuk meningkatkan.
Versi 1.0.0 telah dirilis. Versi ini mencakup perubahan berikut:
iban_country_is_sepa($iban_country)
iban_to_human_format($iban)
Awal bulan ... rilis pemeliharaan kecil , tidak kritis.
*Kami sekarang memiliki milis http://groups.google.com/group/php-iban-users. Jangan ragu untuk memposting umpan balik, pertanyaan, atau saran Anda - kami ingin tahu bagaimana Anda menggunakan perpustakaan. Hingga saat ini, proyek telah mencapai lebih dari 400 unduhan dan masih kuat, dengan lebih dari satu pengguna baru per hari - pertunjukan yang cukup bagus untuk perpustakaan khusus!
* Versi 12 telah dirilis. File registri telah ditingkatkan, sebagian sebagai hasil dari laporan pengguna dan sebagian sebagai hasil dari masalah yang ditemukan saat melakukan tes otomatis terhadap versi 11.
Baris header yang dikoreksi dua kolom tidak diwakili dalam judul ( bban_length
dan iban_length
). Mereka sekarang telah ditambahkan.
Perbaikan untuk entri registri untuk wilayah Prancis (PF, TF, YT, NC, PM, WF) Wilayah Prancis tidak secara eksplisit termasuk dalam SWIFT Spesifikasi TextFile. Mereka digandakan dari Prancis menurut komentar yang tidak terstruktur terhadap entri itu. Contoh IBAN kemudian dibuat untuk tujuan ilustrasi dengan hanya memodifikasi awalan negara tanpa meregenerasi checksum. Contoh -contoh Iban yang termasuk untuk wilayah ini sekarang harus benar.
Gibraltar dan Hongaria (GI, HU) memperbaiki bug di mana kedua wilayah memiliki usus besar yang berlebihan ditambahkan ke ekspresi reguler mereka setelah konversi dokumen awal, yang menyebabkan kegagalan validasi untuk semua IBAN di negara -negara tersebut.
Mauritius (MU) mengoreksi ekspektasi panjang Iban dari 31 hingga 30.
Contoh Swedia (SE) Iban telah dimodifikasi secara manual dari contoh spesifikasi IBAN di awal pembangunan dan tidak melewati checksum. Contoh resmi Iban telah dipulihkan.
Tunisia (TN) mengoreksi string validasi yang tidak patut disebabkan oleh bug dalam konversi dokumen awal (spesifikasi format IBAN untuk fungsi konversi ekspresi reguler).
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 );
Penggunaan OO tidak dianjurkan karena ada tren masa kini untuk menggunakan model yang berlebihan. Namun, jika Anda lebih suka OO PHP maka dengan segala cara menggunakan pembungkus berorientasi objek, dijelaskan di bawah ini.
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 ();
Lihat sendiri bagaimana pendekatan dan fitur kami dibandingkan dengan semua perpustakaan ini ...
Bahasa | Perpustakaan |
---|---|
C# | IBAN-API-NET |
Jawa | IBAN-API-JAVA |
Jawa | IBAN4J |
Jawa | Java-Eman |
skrip java | IBAN.JS |
skrip java | NG-BIBAN |
Objective | Iban-helper |
Objective | Ibanvalidasi |
Perl | Berbagai perpustakaan CPAN |
ular piton | Django-Localflavor |
ular piton | Iban-generator |
Rubi | bank |
Rubi | IBAN-TOOLS |
Rubi | ibandit |
Rubi | Ibanizator |
Rubi | Iso-Eman |