php-iban
é uma biblioteca para analisar, validar e gerar informações de contas bancárias IBAN (e IIBAN) em PHP.
Todas as partes de um IBAN podem ser recuperadas, incluindo código do país, soma de verificação, BBAN, código da instituição financeira ou do banco, número da conta e, quando um sistema nacional de comprimento fixo estiver em uso, também o código da agência/classificação. As somas de verificação nacionais herdadas também podem ser recuperadas, validadas e definidas corretamente, quando disponíveis, quer se apliquem à parte do número da conta, aos identificadores de bancos e agências, a parte ou a todos os itens acima. Os códigos de país IBAN podem ser convertidos nos formatos ISO3166-1 alfa-2 e IANA, o país IBAN pai que atua como registrador para territórios dependentes pode ser consultado, a moeda nacional oficial (formato de código alfa ISO4217), o nome do banco central e o URL do banco central também pode ser consultado para facilitar a integração. Os IBANs podem ser convertidos entre representação humana e máquina. Os IBANs podem ser ofuscados para apresentação a humanos em circunstâncias especiais, como identificação relativa. Está incluída uma base de dados de IBANs de exemplo/teste de diferentes países. Finalmente, sugestões altamente precisas para a entrada originalmente pretendida podem ser feitas quando um IBAN incorreto é detectado e é devido a um erro de transcrição.
O analisador foi construído usando expressões regulares para adaptar o conteúdo do registro oficial do IBAN disponível no SWIFT e depois modificado manualmente para casos especiais, como erros e omissões nas especificações oficiais do SWIFT.
Desde então, várias deficiências na adaptação inicial foram corrigidas e a versão atual deverá ser uma implementação bastante correta e confiável.
Quando apropriado, as recomendações do Comité Europeu de Normas Bancárias (CEBS) também foram incorporadas.
Tenha em mente que, como as especificações mudam frequentemente, elas podem não estar 100% atualizadas se uma nova versão tiver sido lançada recentemente - no entanto, faço o meu melhor. No momento, pensamos que estamos atualizados com o lançamento de janeiro de 2020, ou seja. Versão em PDF nº 86.
Licenciado sob LGPL, é gratuito para uso em ambientes comerciais.
Os seguintes 116 países IBAN oficiais e não oficiais são suportados.
Se você usa o compositor, você pode simplesmente executar composer require globalcitizen/php-iban
para prosseguir. Alegadamente (e) foram feitos via compositor.
(Se você ainda não possui composer
e deseja instalá-lo de forma insegura (não recomendado, mas conveniente), você pode executar curl -sS https://getcomposer.org/installer | php
ou wget -O- https://getcomposer.org/installer | php
Em seguida, basta adicionar o seguinte ao seu arquivo composer.json
:
// composer.json
{
"require" : {
"globalcitizen/php-iban" : "4.2.3"
}
}
Em seguida, você pode instalar as novas dependências executando o comando de atualização do composer
no diretório onde seu arquivo composer.json
está localizado:
# 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
Você pode ver esta biblioteca no Packagist.
Para uma instalação normal, use o comando git clone
:
# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone [email protected]:globalcitizen/php-iban.git
Alternativamente, para incorporar a biblioteca php-iban
em seu próprio repositório gerenciado git
em um número de revisão específico, de modo que seja possível atualizar a versão de maneira previsível enquanto mantém um sistema maior que depende de sua funcionalidade:
# 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 '
Então, ao verificar projetos git
com submódulos pela primeira vez, normalmente você precisa realizar algumas etapas extras:
# check out your project as normal
$ git clone [email protected]:your/project.git
# initialize submodules
$ git submodule init
# update submodules
$ git submodule update
Para pular essas etapas, adicione o argumento --recursive
ao git clone
durante o check-out:
# check out your project, initialize and update all submodules
$ git clone --recursive [email protected]:your/project.git
Se mais tarde você desejar que seu projeto use uma versão mais recente do php-iban
, execute:
# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m ' Update php-iban submodule '
zip
ou tar.gz
unzip filename.zip
em plataformas semelhantes a Unix.php-iban
do subdiretório libraries/php-iban
do diretório pai, você pode usar a seguinte instrução require_once(): <?php
require_once ( dirname ( __FILE__ ) . ' /../libraries/php-iban/php-iban.php ' );
# ... your code utilizing php-iban
?>
A tabela a seguir compara o php-iban com outros projetos PHP que oferecem funcionalidades relacionadas ao IBAN, com base em informações gerais do projeto e nos paradigmas de programação suportados.
Projeto | Lic. | Processo | OO | Começou | Mais recente | Estrela | Assistir | Garfo | Instalações | Cultura doméstica | Dep. |
---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | LGPL | ✔ | ✔ | 2009 | 4.2.3 | 426 | 29 | 104 | ~7 milhões+* | Global* | nenhum |
Iban | MIT | ✘ | ✔ | 2013 | 1.3.0 | 50 | 9 | 19 | 178,39 mil | Alemão | muito |
Códigos Iso | GPL3 | ✘ | ✔ | 2012 | 2.1.1 | 466 | 22 | 54 | 145 mil | Francês | muito |
SepaUtil's | GPL3 | ✘ | ✔ | 2014 | 1.2.3 | 8 | 4 | 3 | 25 mil | Alemão | phpunit |
Symfony | MIT | ✘ | ✔ | 2013 | 3.3.6 | 15 mil | 1214 | 5,6 mil | Mais de 23 milhões | Francês | muito |
Notas:
Agora vamos dar uma olhada nos recursos.
+ | ISO | IANA | SEPA | ₶ | UO | MT | NC | ₴ | CB | H? | Registro | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116: CSV completo e corrigido com erros com conjunto de ferramentas e documentação de código aberto |
Iban | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54: origem parcial, codificada e duvidosa |
Códigos Iso | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66: origem parcial, codificada e duvidosa |
SepaUtil's | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89: origem parcial, codificada e duvidosa |
Symfony | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95: origem parcial, codificada e duvidosa |
Observação:
IBAN XXXX XXXX XXXX XXXX
em vez de XXXXXXXXXXXXXXXX
- muito mais razoável.Em suma, embora os usuários do compositor aparentemente tenham optado por bibliotecas rivais (particularmente o Iban), provavelmente devido ao tempo que levamos para integrar um arquivo do compositor, essas bibliotecas são frequentemente estruturas web completas ou pesadas em dependências, menos maduras, falham dar gorjeta à fundação do software livre, não suporta o paradigma de programação processual (para quando AbstractProductClassMakerFactories simplesmente não funciona), usa dados de fontes duvidosas, tende a usar licenças que são incompatíveis com certos usos comerciais e são francamente carentes de recursos.
Então, usuário destemido... escolha php-iban : a biblioteca ética, funcional, voltada para o futuro e descomplicada para processamento de IBAN e IIBAN. Escolha vencer! ;)
Se você conhece o URL do IBAN nacional, BBAN ou documentação de soma de verificação nacional de fontes oficiais, informe-nos na edição nº 39 e na edição nº 41.
Os bancos das Ilhas Faroé (FO) não respondem, nem o Banco Nacional Dinamarquês que me encaminhou para eles.
O Luxemburgo (LU) não parece estar em conformidade com nenhum sistema de checksum único. Embora alguns IBAN sejam validados com sistemas razoavelmente comuns, outros não o fazem ou usam outros. A sugestão de que o Luxemburgo dispõe de um sistema nacional de checksum pode, de facto, ser incorrecta. Precisamos de alguns esclarecimentos aqui, espero que alguém possa encontrar uma declaração oficial.
A Mauritânia (MR) tem um sistema de soma de verificação de dois caracteres, mas nosso IBAN de exemplo não corresponde ao MOD97-10, que seria o sistema esperado. Anteriormente, o IBAN aqui era sempre fixado em '13' dígitos de soma de verificação, no entanto, a partir do registro v66, agora é dinâmico, o que sugere um sistema de soma de verificação alterado ou, pelo menos, agora relaxado nacionalmente.
Se você estiver disposto a gastar algum tempo pesquisando, poderíamos fazer mais alguns IBANs de teste para a maioria dos países, especialmente os menores...
A versão 4.2.3 foi lançada.
A versão 4.2.2 foi lançada.
A versão 4.2.1 foi lançada.
A versão 4.2.0 foi lançada.
A versão 4.1.1 foi lançada.
A versão 4.1.0 foi lançada.
A versão 4.0.0 foi lançada.
A versão 3.0.3 foi lançada.
A versão 3.0.2 foi lançada.
A versão 3.0.0 foi lançada.
A versão 2.8.2 foi lançada.
A versão 2.8.1 foi lançada.
TL
BBAN removeu espaços estranhos (não afetou a validação do IBAN). (Obrigado a @DanyCorbineauBappli) A versão 2.8.0 foi lançada.
A versão 2.7.5 foi lançada.
A versão 2.7.4 foi lançada.
iban_to_obfsucated_format()
ou ObfuscatedFormat()
para ofuscar o IBAN para cenários de saída específicos (como identificação relativa)A versão 2.7.3 foi lançada.
A versão 2.7.2 foi lançada.
A versão 2.7.1 foi lançada.
A versão 2.7.0 foi lançada.
A versão 2.6.9 foi lançada.
SM
)A versão 2.6.8 foi lançada.
IT
)A versão 2.6.7 foi lançada.
SK
)A versão 2.6.6 foi lançada.
ini_set
habilitadoA versão 2.6.5 foi lançada.
gmp
estava habilitadaA versão 2.6.4 foi lançada.
bcmath
A versão 2.6.3 foi lançada.
A versão 2.6.2 foi lançada.
A versão 2.6.1 foi lançada.
A versão 2.6.0 foi lançada.
A versão 2.5.9 foi lançada.
A versão 2.5.8 foi lançada.
A versão 2.5.7 foi lançada.
A versão 2.5.6 foi lançada.
A versão 2.5.5 foi lançada.
A versão 2.5.4 foi lançada.
A versão 2.5.3 foi lançada.
A versão 2.5.2 foi lançada.
A versão 2.5.1 foi lançada.
908
) na Sérvia (RS) parece ter vários IBANs ativos com somas de verificação nacionais quebradas, por isso ignoramos todas as somas de verificação nacionais nas contas desse banco.A versão 2.5.0 foi lançada.
INGB
(ING Bank) que abandonou a soma de verificação original01
(Banco da Eslovênia) que não honra somas de verificaçãoutils/example-ibans
, que já possui um bom número de entradas para um bom número de países. Isso deve simplificar pesquisas futuras.A versão 2.4.20 foi lançada.
A versão 2.4.19 foi lançada.
A versão 2.4.18 foi lançada.
A versão 2.4.17 foi lançada.
01
na Eslovénia (SI)) não implementa o sistema nacional de checksum, como um caso especial. Foi adicionada uma excepção à implementação do checksum nacional na Eslovénia.A versão 2.4.16 foi lançada.
A versão 2.4.15 foi lançada.
A versão 2.4.14 foi lançada.
A versão 2.4.13 foi lançada.
iban_mistranscription_suggestions()
agora se comporta corretamente quando passadas strings semelhantes a IBAN formatadas livremente_verhoeff()
que suporta certas implementações de checksum nacionais agora se comporta corretamente quando passa uma entrada inválidaA versão 2.4.12 foi lançada.
A versão 2.4.11 foi lançada.
central_bank_url
e central_bank_name
, por exemplo:A versão 2.4.10 foi lançada.
currency_iso4217
armazena a moeda oficial do país no formato de código alfa ISO4217, por exemplo:A versão 2.4.9 foi lançada.
parent_registrar
armazena o país IBAN do registrador pai de um país IBAN, por exemplo:A versão 2.4.8 foi lançada.
A versão 2.4.7 foi lançada.
A versão 2.4.6 foi lançada.
A versão 2.4.5 foi lançada.
A versão 2.4.4 foi lançada.
A versão 2.4.3 foi lançada.
A versão 2.4.2 foi lançada.
A versão 2.4.1 foi lançada.
A versão 2.4.0 foi lançada.
iban_{set|find|verify}_nationalchecksum()
e seus equivalentes OO-wrapper. Atualmente a Bélgica (BE), a França (FR) e a Espanha (ES) são apoiadas. Se você gostaria de ver o seu país apoiado, consulte a edição nº 39 e a edição nº 41. A versão 2.3.1 foi lançada.
A versão 2.3.0 foi lançada.
A versão 2.2.0 foi lançada.
A versão 2.1.9 foi lançada.
A versão 2.1.8 foi lançada.
A versão 2.1.7 foi lançada.
iban_get_nationalchecksum_part()
, iban_country_get_nationalchecksum_start_offset()
e iban_country_get_nationalchecksum_stop_offset()
e seus equivalentes OO-wrapper $myIban->NationalChecksum()
, $myCountry->NationalChecksumStartOffset()
e $mycountry->NationalChecksumStopOffset()
. Teste e documentação atualizados. Se você sabe alguma coisa sobre algoritmos de checksum nacionais, dê uma ajuda na edição nº 39.A versão 2.1.6 foi lançada.
machine_format_only
.A versão 2.1.5 foi lançada.
machine_format_only
estrito adicional para verify_iban()
para encerrar o problema nº 22.A versão 2.1.4 foi lançada.
A versão 2.1.3 foi lançada.
iban_to_human_format()
foi corrigido quando uma entrada passada já continha espaços.A versão 2.1.2 foi lançada. Todos os códigos de países IBAN não oficiais conhecidos estão agora integrados. Além de pequenas atualizações de documentação e uma abreviação do nome relatado de Kosovo, esta versão acrescenta:
A versão 2.1.1 foi lançada. Atualmente, os códigos IBAN não oficiais dos países estão a ser integrados e o processo continua em curso. Esta versão adiciona:
A versão 2.1.0 foi lançada.
Atualmente, os códigos IBAN não oficiais dos países estão a ser integrados e o processo continua em curso. Uma nova bandeira foi criada para verificar se um país é um registro oficial emitido pelo SWIFT ou não. Os seguintes novos países foram, portanto, adicionados.
Observe também que o registro IIBAN (AA) foi marcado como não oficial e os recursos listados em docs/TODO
foram migrados para problemas do Github e esse arquivo foi excluído.
A versão 2.0.1 foi lançada. Isso é para comemorar os testes reais, o suporte do compositor e também para finalmente acompanhar as mudanças. Esta versão deverá estar atualizada com todas as alterações de registro até o momento, incluindo alterações ou acréscimos nos países:
A versão 1.6.0 foi lançada. Esta versão apresenta mais correções de registro (territórios recém-adicionados com dados defeituosos, somas de verificação incorretas em exemplos de IBANs, etc.), bem como rotinas de testes aprimoradas, documentação estendida e documentação corrigida. Todos os usuários são aconselhados a atualizar. Agora temos execução automatizada de scripts de teste com Travis CI, para fornecer robustez adicional para todo o código confirmado. Isso demorou mais do que o esperado, pois, infelizmente, escolhi o momento exato em que Travis quebrou seus logs de construção - https://www.traviscistatus.com/incidents/fcllblkclgmb - para ver o motivo de tanto alarido... provando novamente que a computação em nuvem é apenas ótimo para quebrar coisas inesperadamente. Como eles querem ocultar as coisas, literalmente não houve saída de depuração, e fui levado a acreditar que a culpa era minha. Caros programadores, vejam: é o início da era do fracasso místico.
A versão 1.5.0 foi lançada. Não há alterações no código, mas agora temos http://packagist.org/ integração, esperamos que isso faça com que ele comece a funcionar. Se você usa o packagist, agora você pode adicionar a biblioteca ao seu projeto apenas executando composer require globalcitizen/php-iban
(obrigado a @acoulton por apontar o caminho)
A versão 1.4.9 foi lançada usando o novo processo de lançamento baseado no Github. Esperamos que isso forneça um ponto de ancoragem sólido para aqueles que agrupam a biblioteca com outro software. Também temos um arquivo de metadados do compositor para facilitar a integração. Novos URLs de registro IBAN integrados. Removida a antiga estrutura de tag/tronco SVN.
URL SWIFT corrigido para página IBAN. Suporte enfatizado a erros de transcrição incorreta.
Finalmente, o Google eliminou code.google.com
e migramos para o Github! Assim que a antiga estrutura trunk
/ tag
(permanente de svn
) for limpa e este documento traduzido do antigo formato wiki para markdown, uma nova versão será emitida.
A versão 1.4.6 foi lançada:
Infelizmente, o Google agora exige que os projetos code.google.com
usem o Google Drive. Tentei usar o Google Drive (inscrever-se para uma nova conta, passar por e-mails, ser tratado como um robô, aprender uma interface estúpida e amigável, receber mensagens de erro sem sentido como 'Seu limite de compartilhamento foi excedido' (com Arquivos de 2x290 KB em uma nova conta que me disseram para criar) e perdi totalmente a paciência.
Então, por enquanto, você só terá que fazer o download usando git
. Irei migrar php-iban
para o Github em breve. O Google realmente está sendo um pé no saco recentemente, com todo esse lixo do Google+ e do Google Drive, arruinando o Picasa, arruinando o Sketchup por falta de atenção, etc.
A versão 1.4.5 foi lançada:
A versão 1.4.4 foi lançada:
O repositório do código -fonte do projeto mudou de svn
(UGH) para git
(yay!) .
Versão 1.4.3 foi lançado:
docs/COMEDY-OF-ERRORS
quanto em linha no conversor do registro.Versão 1.4.2 foi lançado:
Versão 1.4.1 foi lançado:
$__disable_iiban_gmp_extension=true;
)A versão 1.4.1 ainda está sendo preparada, esmagando alguns bugs e atualizando o registro ... Enquanto isso, chegou à minha atenção que fomos apresentados no Code Candy Blog! http://www.codecandies.com/2012/05/30/no-eceptions/ Hooray para o senso de humor alemão! Hahah.
Versão 1.4.0 foi lançado:
VERSION
, para incluir informações de versão rígida na árvore de origem, por solicitação. Versão 1.3.9 foi lançado:
Versão 1.3.8 foi lançado:
Versão 1.3.7 foi lançado:
Versão 1.3.6 foi lançado:
Versão 1.3.5 foi lançado:
Versão 1.3.4 foi lançado:
Versão 1.3.3 foi lançado:
Versão 1.3.2 foi lançado:
Versão 1.3.1 foi lançado:
Versão 1.3.0 foi lançada. Esta versão adiciona suporte de sugestão de erros de descrição da tradução.
Versão 1.2.0 foi lançado. Este lançamento adiciona suporte ao número de conta bancária internacional da Internet (IIBAN), conforme o atual rascunho da Internet da Iiban em http://tools.ietf.org/html/draft-iiban-01
A versão 1.1.2 foi lançada. Isso adiciona longas tags abertas ao arquivo principal da biblioteca para simplificar a implantação em muitas instalações de PHP padrão.
A versão 1.1.1 foi lançada. Isso corrige um erro de digitação em uma chamada de função no novo wrapper OO. Os usuários não OO não precisam atualizar.
A versão 1.1.0 foi lançada. Esta versão adiciona uma biblioteca de wrapper orientada a objetos e atualizações relacionadas aos scripts de documentação e teste. Não é fundamental para os usuários existentes atualizarem.
A versão 1.0.0 foi lançada. Esta versão inclui as seguintes alterações:
iban_country_is_sepa($iban_country)
iban_to_human_format($iban)
No início do mês ... pequena liberação de manutenção , não crítica.
*Agora temos uma lista de discussão http://groups.google.com/group/php-iban-users. Sinta -se à vontade para postar seus comentários, consultas ou sugestões - gostaríamos de saber como você está usando a biblioteca. Até o momento, o projeto atingiu mais de 400 downloads e ainda está forte, com mais de um novo usuário por dia - uma exibição muito boa para uma biblioteca especializada!
* A versão 12 foi lançada. O arquivo de registro foi aprimorado, em parte como resultado de relatórios do usuário e em parte como resultado de problemas descobertos ao realizar testes automatizados em relação à versão 11.
Linha de cabeçalho corrigida Duas colunas não foram representadas no título ( bban_length
e iban_length
). Eles já foram adicionados.
As correções para entradas de registro para territórios franceses (PF, TF, YT, NC, PM, WF) territórios franceses não estão explicitamente incluídos no arquivo de texto Swift Specification. Eles foram duplicados da França de acordo com comentários não estruturados contra essa entrada. Exemplo de ibans foram então feitos para fins ilustrativos simplesmente modificando o prefixo do país sem regenerar as somas de cheques. Os exemplos do IBAN incluídos para esses territórios devem agora estar corretos.
Gibraltar e Hungria (GI, HU) consertaram um bug em que ambos os territórios tinham um cólon supérfluo anexado às suas expressões regulares após a conversão inicial do documento, o que estava causando falhas de validação para todos os ibans nesses países.
Maurício (MU) corrigiu a expectativa de comprimento do IBAN de 31 a 30.
Exemplo da Suécia (SE) IBAN foi modificado manualmente no exemplo de especificação IBAN no início do desenvolvimento e não passou por verificação. O exemplo oficial do IBAN foi restaurado.
Tunísia (TN) corrigiu seqüências de validação inadequadas causadas por um bug na conversão inicial do documento (especificador de formato IBAN para função de conversão de expressão regular).
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 );
O uso do OO é desencorajado, pois há uma tendência atual para usar demais o modelo. No entanto, se você preferir o OO PHP, use o invólucro orientado a objeto, descrito abaixo.
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 ();
Veja por si mesmo como nossa abordagem e recursos se comparam favoravelmente com todas essas bibliotecas ...
Linguagem | Biblioteca |
---|---|
C# | IBAN-API-NET |
Java | Iban-api-Java |
Java | IBAN4J |
Java | Java-Iban |
JavaScript | iban.js |
JavaScript | Ng-Iban |
Objectivec | Iban-helper |
Objectivec | Ibanvalidação |
Perl | Várias bibliotecas da CPAN |
Pitão | Django-locfLavor |
Pitão | Iban-gerador |
Rubi | banco |
Rubi | Toolas Iban |
Rubi | ibandit |
Rubi | Ibanizator |
Rubi | ISO-IBAN |