php-iban
es una biblioteca para analizar, validar y generar información de cuentas bancarias IBAN (e IIBAN) en PHP.
Se pueden recuperar todas las partes de un IBAN, incluido el código de país, la suma de verificación, el BBAN, el código de institución financiera o banco, el número de cuenta y, cuando se utiliza un sistema nacional de longitud fija, también el código de sucursal/sort. Las sumas de verificación nacionales heredadas también se pueden recuperar, validar y configurar correctamente, cuando estén disponibles, ya sea que se apliquen a la parte del número de cuenta, a los identificadores de banco y sucursal, a parte o a la totalidad de los anteriores. Los códigos de país IBAN se pueden convertir a los formatos ISO3166-1 alfa-2 e IANA, se puede consultar el país IBAN principal que actúa como registrador para los territorios dependientes, la moneda nacional oficial (formato de código alfa ISO4217), el nombre del banco central y la URL del banco central. También se puede consultar para facilitar la integración. Los IBAN se pueden convertir entre representación humana y máquina. Los IBAN pueden ocultarse para su presentación a humanos en circunstancias especiales, como la identificación relativa. Se incluye una base de datos de IBAN de ejemplo/prueba de diferentes países. Finalmente, se pueden hacer sugerencias muy precisas para la entrada prevista originalmente cuando se detecta un IBAN incorrecto y se debe a un error de transcripción.
El analizador se creó utilizando expresiones regulares para adaptar el contenido del registro IBAN oficial disponible en SWIFT y luego se modificó manualmente para casos especiales como errores y omisiones en las especificaciones oficiales de SWIFT.
Desde entonces se han rectificado varias deficiencias en la adaptación inicial, y la versión actual debería ser una implementación bastante correcta y confiable.
En su caso, también se han incorporado las recomendaciones del Comité Europeo de Normas Bancarias (ECBS).
Tenga en cuenta que debido a que la especificación cambia con frecuencia, es posible que no esté 100% actualizada si se lanzó una nueva versión recientemente; sin embargo, hago lo mejor que puedo. Actualmente se cree que estamos actualizados con la versión de enero de 2020, es decir. Versión PDF n.º 86.
Con licencia LGPL, su uso es gratuito en entornos comerciales.
Se admiten los siguientes 116 países IBAN oficiales y no oficiales .
Si usa Composer, simplemente puede ejecutar composer require globalcitizen/php-iban
para comenzar. Según se informa (y) se realizaron a través del compositor.
(Si aún no tiene composer
y desea instalarlo de forma insegura (no recomendado, pero conveniente), puede ejecutar curl -sS https://getcomposer.org/installer | php
o wget -O- https://getcomposer.org/installer | php
)
Luego simplemente agregue lo siguiente a su archivo composer.json
:
// composer.json
{
"require" : {
"globalcitizen/php-iban" : "4.2.3"
}
}
Luego, puede instalar las nuevas dependencias ejecutando el comando de actualización de composer
desde el directorio donde se encuentra su archivo composer.json
:
# install
$ php composer.phar install
# update
$ php composer.phar update globalcitizen/php-iban
# or you can simply execute composer command if you set it to
# your PATH environment variable
$ composer install
$ composer update globalcitizen/php-iban
Puede ver esta biblioteca en Packagist.
Para una instalación normal, utilice el comando git clone
:
# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone [email protected]:globalcitizen/php-iban.git
Alternativamente, para incrustar la biblioteca php-iban
en su propio repositorio administrado git
en un número de revisión específico, de modo que sea posible actualizar la versión de una manera predecible mientras se mantiene un sistema más grande que depende de su funcionalidad:
# 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 '
Luego, cuando revisas proyectos git
con submódulos por primera vez, normalmente necesitas realizar un par de pasos adicionales:
# check out your project as normal
$ git clone [email protected]:your/project.git
# initialize submodules
$ git submodule init
# update submodules
$ git submodule update
Para omitir estos pasos, agregue el argumento --recursive
a git clone
al realizar el pago:
# check out your project, initialize and update all submodules
$ git clone --recursive [email protected]:your/project.git
Si más adelante desea que su proyecto utilice una versión más reciente de php-iban
, ejecute:
# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m ' Update php-iban submodule '
zip
o tar.gz
unzip filename.zip
en plataformas tipo Unix.php-iban
desde el subdirectorio libraries/php-iban
del directorio principal, puede utilizar la siguiente instrucción require_once(): <?php
require_once ( dirname ( __FILE__ ) . ' /../libraries/php-iban/php-iban.php ' );
# ... your code utilizing php-iban
?>
La siguiente tabla compara php-iban con otros proyectos PHP que ofrecen funcionalidad relacionada con IBAN, según la información general del proyecto y los paradigmas de programación admitidos.
Proyecto | Lic. | proceso | OOO | Comenzó | El último | Estrella | Mirar | Tenedor | Instalaciones | Cultura del hogar | departamentos |
---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | LGPL | ✔ | ✔ | 2009 | 4.2.3 | 426 | 29 | 104 | ~7 millones+* | Global* | ninguno |
iban | MIT | ✘ | ✔ | 2013 | 1.3.0 | 50 | 9 | 19 | 178,39k | Alemán | lotes |
Códigos ISO | GPL3 | ✘ | ✔ | 2012 | 2.1.1 | 466 | 22 | 54 | 145k | Francés | lotes |
SepaUtil's | GPL3 | ✘ | ✔ | 2014 | 1.2.3 | 8 | 4 | 3 | 25k | Alemán | unidad php |
Symfony | MIT | ✘ | ✔ | 2013 | 3.3.6 | 15k | 1214 | 5.6k | 23 millones+ | Francés | lotes |
Notas:
Ahora echemos un vistazo a las características.
+ | ISO | IANA | SEPA | ₶ | UO | MONTE | CAROLINA DEL NORTE | ₴ | CB | ¿H? | Registro | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
php-iban | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116: CSV completo con corrección de errores con documentación y cadena de herramientas de código abierto |
iban | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54: origen parcial, codificado y dudoso |
Códigos ISO | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66: origen parcial, codificado y dudoso |
SepaUtil's | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89: origen parcial, codificado y dudoso |
Symfony | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95: origen parcial, codificado y dudoso |
Nota:
IBAN XXXX XXXX XXXX XXXX
en lugar de XXXXXXXXXXXXXXXX
- mucho más razonable.En resumen, si bien los usuarios de Composer aparentemente han optado por bibliotecas rivales (particularmente Iban), probablemente debido al tiempo que nos tomó integrar un archivo de Composer, esas bibliotecas son a menudo marcos web completos o dependencias onerosas, menos maduras, fallan. para felicitar a la fundación del software libre, no apoyar el paradigma de programación procedimental (para cuando AbstractProductClassMakerFactories simplemente no sea suficiente), usar datos de fuentes dudosas, tender a usar licencias que son incompatibles con ciertos usos comerciales, y, francamente, les faltan funciones.
Entonces, usuario intrépido... elija php-iban : la biblioteca preferida, ética, funcional, con visión de futuro y sin complicaciones para el procesamiento de IBAN e IIBAN. ¡Elige ganar! ;)
Si conoce la URL del IBAN nacional, BBAN o la documentación de suma de verificación nacional de fuentes oficiales, infórmenos en el número 39 y en el número 41.
Los bancos de las Islas Feroe (FO) no responden, ni tampoco el Banco Nacional Danés que me remitió a ellos.
Luxemburgo (LU) no parece ajustarse a ningún sistema único de suma de control. Si bien algunos IBAN se validan con sistemas razonablemente comunes, otros no lo hacen o utilizan otros. La sugerencia de que Luxemburgo tiene un sistema nacional de suma de control puede ser, en realidad, incorrecta. Necesitamos alguna aclaración aquí, ojalá alguien pueda encontrar una declaración oficial.
Mauritania (MR) tiene un sistema de suma de comprobación de dos caracteres, pero nuestro IBAN de ejemplo no coincide con MOD97-10, que sería el sistema esperado. Anteriormente, el IBAN aquí siempre estaba fijado en '13' dígitos de suma de verificación, sin embargo, a partir del registro v66 ahora es dinámico, lo que sugiere un sistema de suma de verificación modificado o al menos ahora relajado a nivel nacional.
Si está dispuesto a dedicar algo de tiempo a buscar, nos vendría bien algunos IBAN de prueba más para la mayoría de los países, especialmente los más pequeños...
Se ha lanzado la versión 4.2.3 .
Se ha lanzado la versión 4.2.2 .
Se ha lanzado la versión 4.2.1 .
Se ha lanzado la versión 4.2.0 .
Se ha lanzado la versión 4.1.1 .
Se ha lanzado la versión 4.1.0 .
Se ha lanzado la versión 4.0.0 .
Se ha lanzado la versión 3.0.3 .
Se ha lanzado la versión 3.0.2 .
Se ha lanzado la versión 3.0.0 .
Se ha lanzado la versión 2.8.2 .
Se ha lanzado la versión 2.8.1 .
TL
BBAN eliminó los espacios superfluos (no afectó la validación del IBAN). (Gracias a @DanyCorbineauBappli) Se ha lanzado la versión 2.8.0 .
Se ha lanzado la versión 2.7.5 .
Se ha lanzado la versión 2.7.4 .
iban_to_obfsucated_format()
u ObfuscatedFormat()
para ofuscar el IBAN para escenarios de salida específicos (como la identificación relativa)Se ha lanzado la versión 2.7.3 .
Se ha lanzado la versión 2.7.2 .
Se ha lanzado la versión 2.7.1 .
Se ha lanzado la versión 2.7.0 .
Se ha lanzado la versión 2.6.9 .
SM
)Se ha lanzado la versión 2.6.8 .
IT
)Se ha lanzado la versión 2.6.7 .
SK
)Se ha lanzado la versión 2.6.6 .
ini_set
habilitadoSe ha lanzado la versión 2.6.5 .
gmp
Se ha lanzado la versión 2.6.4 .
bcmath
Se ha lanzado la versión 2.6.3 .
Se ha lanzado la versión 2.6.2 .
Se ha lanzado la versión 2.6.1 .
Se ha lanzado la versión 2.6.0 .
Se ha lanzado la versión 2.5.9 .
Se ha lanzado la versión 2.5.8 .
Se ha lanzado la versión 2.5.7 .
Se ha lanzado la versión 2.5.6 .
Se ha lanzado la versión 2.5.5 .
Se ha lanzado la versión 2.5.4 .
Se ha lanzado la versión 2.5.3 .
Se ha lanzado la versión 2.5.2 .
Se ha lanzado la versión 2.5.1 .
908
) en Serbia (RS) parece tener múltiples IBAN activos con sumas de verificación nacionales rotas, por lo que ignoramos todas las sumas de verificación nacionales en las cuentas de ese banco.Se ha lanzado la versión 2.5.0 .
INGB
(ING Bank) que ha eliminado la suma de control original01
(Banco de Eslovenia) que no respeta las sumas de controlutils/example-ibans
que ya cuenta con un buen número de entradas para un buen número de países. Esto debería simplificar la investigación futura.Se ha lanzado la versión 2.4.20 .
Se ha lanzado la versión 2.4.19 .
Se ha lanzado la versión 2.4.18 .
Se ha lanzado la versión 2.4.17 .
01
en Eslovenia (SI)) no implementa el sistema de suma de control nacional, como caso especial. Se ha añadido una excepción a la implementación de la suma de control nacional de Eslovenia.Se ha lanzado la versión 2.4.16 .
Se ha lanzado la versión 2.4.15 .
Se ha lanzado la versión 2.4.14 .
Se ha lanzado la versión 2.4.13 .
iban_mistranscription_suggestions()
ahora se comporta correctamente cuando se pasan cadenas tipo IBAN con formato flexible._verhoeff()
que admite ciertas implementaciones nacionales de suma de verificación ahora se comporta correctamente cuando se pasa una entrada no válidaSe ha lanzado la versión 2.4.12 .
Se ha lanzado la versión 2.4.11 .
central_bank_url
y central_bank_name
, por ejemplo:Se ha lanzado la versión 2.4.10 .
currency_iso4217
almacena la moneda oficial del país en formato de código alfa ISO4217, por ejemplo:Se ha lanzado la versión 2.4.9 .
parent_registrar
almacena el país IBAN del registrador principal de un país IBAN, por ejemplo:Se ha lanzado la versión 2.4.8 .
Se ha lanzado la versión 2.4.7 .
Se ha lanzado la versión 2.4.6 .
Se ha lanzado la versión 2.4.5 .
Se ha lanzado la versión 2.4.4 .
Se ha lanzado la versión 2.4.3 .
Se ha lanzado la versión 2.4.2 .
Se ha lanzado la versión 2.4.1 .
Se ha lanzado la versión 2.4.0 .
iban_{set|find|verify}_nationalchecksum()
y sus equivalentes de contenedor OO. Actualmente se admiten Bélgica (BE), Francia (FR) y España (ES). Si desea que se admita su país, consulte el número 39 y el número 41. Se ha lanzado la versión 2.3.1 .
Se ha lanzado la versión 2.3.0 .
Se ha lanzado la versión 2.2.0 .
Se ha lanzado la versión 2.1.9 .
Se ha lanzado la versión 2.1.8 .
Se ha lanzado la versión 2.1.7 .
iban_get_nationalchecksum_part()
, iban_country_get_nationalchecksum_start_offset()
e iban_country_get_nationalchecksum_stop_offset()
y sus equivalentes OO-wrapper $myIban->NationalChecksum()
, $myCountry->NationalChecksumStartOffset()
y $mycountry->NationalChecksumStopOffset()
. Pruebas y documentación actualizadas. Si sabe algo sobre los algoritmos de suma de comprobación nacionales, eche una mano en el número 39.Se ha lanzado la versión 2.1.6 .
machine_format_only
.Se ha lanzado la versión 2.1.5 .
machine_format_only
para verify_iban()
para cerrar el problema n.° 22.Se ha lanzado la versión 2.1.4 .
Se ha lanzado la versión 2.1.3 .
iban_to_human_format()
cuando se pasa una entrada que ya contiene espacios.Se ha lanzado la versión 2.1.2 . Todos los códigos de país IBAN no oficiales conocidos ahora están integrados. Además de actualizaciones menores de la documentación y una abreviación del nombre reportado de Kosovo, esta versión agrega:
Se ha lanzado la versión 2.1.1 . Actualmente se están integrando códigos de países IBAN no oficiales y el proceso continúa. Esta versión agrega:
Se ha lanzado la versión 2.1.0 .
Actualmente se están integrando códigos de países IBAN no oficiales y el proceso continúa. Se ha creado una nueva bandera para comprobar si un país es un registro oficial emitido por SWIFT o no. Por lo tanto, se han agregado los siguientes nuevos países.
Tenga en cuenta también que el registro IIBAN (AA) se ha marcado como no oficial y las funciones enumeradas en docs/TODO
se han migrado a problemas de Github y ese archivo se ha eliminado.
Se ha lanzado la versión 2.0.1 . Esto es para celebrar las pruebas reales, el apoyo del compositor y, finalmente, ponerse al día con los cambios. Esta versión debe estar actualizada con todos los cambios de registro hasta el presente, incluyendo cambios o adiciones a los países:
Se ha lanzado la versión 1.6.0 . Esta versión presenta más correcciones de registro (territorios recién agregados con datos defectuosos, sumas de verificación incorrectas en ejemplos de IBAN, etc.), así como rutinas de prueba mejoradas, documentación ampliada y documentación corregida. Se recomienda a todos los usuarios que actualicen. Ahora contamos con la ejecución automatizada de scripts de prueba con Travis CI, para brindar solidez adicional a todo el código comprometido. Esto tomó más tiempo de lo esperado ya que desafortunadamente elegí el momento exacto en que Travis rompió sus registros de compilación - https://www.traviscistatus.com/incidents/fcllblkclgmb - para ver a qué se debía tanto alboroto... demostrando nuevamente que la computación en la nube es simplemente Genial para romper cosas inesperadamente. Como quieren ocultar cosas, literalmente no hubo ningún resultado de depuración y me hicieron creer que era culpa mía. Compañeros programadores, he aquí: es el amanecer de la era del fracaso místico.
Se ha lanzado la versión 1.5.0 . No hay cambios en el código, pero ahora tenemos la integración de http://packagist.org/, con suerte esto hará que comience a funcionar. Si usa packagist, ahora puede agregar la biblioteca a su proyecto simplemente ejecutando composer require globalcitizen/php-iban
(gracias a @acoulton por señalar el camino).
La versión 1.4.9 se lanzó utilizando el nuevo proceso de lanzamiento basado en Github. Con suerte, esto proporciona un punto de anclaje sólido para quienes combinan la biblioteca con otro software. También contamos con un archivo de metadatos del compositor contribuido para facilitar la integración. Nuevas URL de registro IBAN integradas. Se eliminó la antigua etiqueta SVN/estructura troncal.
URL SWIFT corregida a la página IBAN. Soporte destacado para errores de transcripción errónea.
¡Finalmente, Google eliminó code.google.com
y hemos migrado a Github! Una vez que se limpie la antigua estructura trunk
/ tag
(que persiste de svn
) y se traduzca este documento del antiguo formato wiki a Markdown, se emitirá una nueva versión.
Se ha lanzado la versión 1.4.6 :
Desafortunadamente, Google ahora requiere que los proyectos code.google.com
utilicen Google Drive. Intenté usar Google Drive (registrarme para obtener una nueva cuenta, pasar por correos electrónicos, ser tratado como un robot, aprender una nueva y estúpida interfaz táctil y amigable, recibir mensajes de error sin sentido como "Se ha excedido tu límite para compartir" (con 2 archivos de 290 KB en una cuenta nueva que me dijeron que creara) y perdí la paciencia por completo.
Entonces, por el momento, solo tendrás que descargar usando git
. En breve migraré php-iban
a Github. Google realmente es un dolor de cabeza últimamente, con toda esta basura de Google+ y Google Drive, arruinando Picasa, arruinando Sketchup por falta de atención, etc. ¿Qué están pensando?
Se ha lanzado la versión 1.4.5 :
Se ha lanzado la versión 1.4.4 :
El repositorio de código fuente del proyecto ha cambiado de svn
(ugh) a git
(¡yay!) .
Se ha lanzado la versión 1.4.3 :
docs/COMEDY-OF-ERRORS
y en línea dentro del convertidor de registro.Se ha lanzado la versión 1.4.2 :
La versión 1.4.1 ha sido lanzada:
$__disable_iiban_gmp_extension=true;
)La versión 1.4.1 todavía se está preparando, aplastando algunos errores y actualizando el registro ... Mientras tanto, ¡me ha llamado la atención que hemos aparecido en el blog Code Candy! http://www.codecandies.com/2012/05/30/no-excepciones/ Hooray para el sentido del humor alemán! Jaja.
La versión 1.4.0 ha sido lanzada:
VERSION
, para incluir información de versión dura en el árbol de origen, por solicitud. La versión 1.3.9 ha sido lanzada:
La versión 1.3.8 ha sido lanzada:
La versión 1.3.7 ha sido lanzada:
Se ha lanzado la versión 1.3.6 :
La versión 1.3.5 ha sido lanzada:
La versión 1.3.4 ha sido lanzada:
La versión 1.3.3 ha sido lanzada:
Se ha lanzado la versión 1.3.2 :
La versión 1.3.1 ha sido lanzada:
La versión 1.3.0 ha sido lanzada. Esta versión agrega soporte de sugerencia de error de transcripción.
La versión 1.2.0 ha sido lanzada. Este comunicado agrega soporte del número de cuenta bancaria internacional de Internet (IIBAN), según el borrador actual de Internet de IIBAN en http://tools.ietf.org/html/draft-iiban-01
Se ha lanzado la versión 1.1.2 . Esto agrega etiquetas abiertas largas al archivo de la biblioteca principal para simplificar la implementación en muchas instalaciones PHP predeterminadas.
La versión 1.1.1 ha sido lanzada. Esto arregla un error tipográfico en una llamada de función en el nuevo envoltorio OO. Los usuarios que no son OO no necesitan actualizar.
La versión 1.1.0 ha sido lanzada. Esta versión agrega una biblioteca de contenedor orientada a objetos y actualizaciones relacionadas con los scripts de documentación y prueba. No es crítico que los usuarios existentes actualicen.
La versión 1.0.0 ha sido lanzada. Esta versión incluye los siguientes cambios:
iban_country_is_sepa($iban_country)
iban_to_human_format($iban)
A principios de mes ... Pequeño comunicado de mantenimiento , no crítico.
*Ahora tenemos una lista de correo http://groups.google.com/group/php-iban-users. No dude en publicar sus comentarios, consultas o sugerencias: nos encantaría saber cómo está utilizando la biblioteca. Hasta la fecha, el proyecto ha alcanzado más de 400 descargas y sigue siendo fuerte, con más de un nuevo usuario por día, ¡una buena presentación para una biblioteca especializada!
* La versión 12 ha sido lanzada. El archivo de registro se ha mejorado, en parte como resultado de los informes de los usuarios y en parte como resultado de problemas descubiertos mientras realiza pruebas automatizadas contra la versión 11.
La fila de encabezado corregido dos columnas no se representaron en el título ( bban_length
e iban_length
). Ahora han sido agregados.
Las soluciones a las entradas de registro para territorios franceses (PF, TF, YT, NC, PM, WF) Los territorios franceses no se incluyen explícitamente en el archivo de texto de Swift Specification. Fueron duplicados de Francia según un comentario no estructurado contra esa entrada. El ejemplo de IBans se hicieron para fines ilustrativos simplemente modificando el prefijo del país sin regenerar las suma de verificación. Los ejemplos Iban incluidos para estos territorios ahora deberían ser correctos.
Gibraltar y Hungría (GI, HU) arreglaron un error donde ambos territorios tenían un colon superfluo adjunto a sus expresiones regulares después de la conversión inicial de documentos, lo que estaba causando fallas de validación para todos los IBans en esos países.
Mauricio (MU) corrigió la expectativa de longitud iban de 31 a 30.
El ejemplo de Suecia (SE) Iban había sido modificado manualmente a partir de un ejemplo de especificación Iban temprano en el desarrollo y no pasó la suma de verificación. El ejemplo oficial de Iban ha sido restaurado.
Túnez (TN) corrigió cadenas de validación incorrectas causadas por un error en la conversión inicial de documentos (especificador de formato Iban a la función de conversión de expresión 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 );
El uso de OO se desaconseja ya que existe una tendencia actual para uso excesivo del modelo. Sin embargo, si prefiere OO PHP, entonces, por completo, use el envoltorio orientado a objetos, que se describe a continuación.
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 ();
Vea usted mismo cómo nuestro enfoque y características se comparan favorablemente con todas estas bibliotecas ...
Idioma | Biblioteca |
---|---|
DO# | iban-api-net |
Java | Iban-api-java |
Java | Iban4J |
Java | java-iban |
Javascript | iban.js |
Javascript | ng-iban |
ObjetivoC | Iban-Helper |
ObjetivoC | Ibanvalidación |
perla | Varias bibliotecas de CPAN |
Pitón | Django-Localflavor |
Pitón | generador iban |
Rubí | banco |
Rubí | Iban-Tools |
Rubí | iBandit |
Rubí | ibanizador |
Rubí | iso-iban |