php-iban
은 PHP에서 IBAN(및 IIBAN) 은행 계좌 정보를 구문 분석, 검증 및 생성하기 위한 라이브러리입니다.
국가 코드, 체크섬, BBAN, 금융 기관 또는 은행 코드, 계좌 번호, 고정 길이 국가 시스템이 사용되는 경우 지점/정렬 코드 등 IBAN의 모든 부분을 검색할 수 있습니다. 레거시 국가 체크섬은 계좌 번호 부분, 은행 및 지점 식별자, 위의 일부 또는 전부에 적용되는지 여부에 관계없이 검색, 검증 및 올바르게 설정될 수도 있습니다. IBAN 국가 코드는 ISO3166-1 알파-2 및 IANA 형식으로 변환될 수 있으며 종속 지역의 등록 기관 역할을 하는 상위 IBAN 국가를 쿼리할 수 있으며 공식 국가 통화(ISO4217 알파 코드 형식), 중앙 은행 이름 및 중앙 은행 URL을 쿼리할 수 있습니다. 통합을 쉽게 하기 위해 쿼리할 수도 있습니다. IBAN은 인간 표현과 기계 표현 간에 변환될 수 있습니다. IBAN은 친척 식별과 같은 특별한 상황에서 인간에게 제시하기 위해 난독화될 수 있습니다. 다양한 국가의 예시/테스트 IBAN 데이터베이스가 포함되어 있습니다. 마지막으로, 잘못된 IBAN이 감지되고 잘못된 표기 오류로 인해 발생한 경우 원래 의도한 입력에 대한 매우 정확한 제안이 이루어질 수 있습니다.
파서는 SWIFT에서 제공되는 공식 IBAN 레지스트리의 내용을 조정하기 위해 정규식을 사용하여 구축되었으며 SWIFT 공식 사양의 오류 및 누락과 같은 특수한 경우에 대해 수동으로 수정되었습니다.
이후 초기 적응의 다양한 결함이 수정되었으며 현재 버전은 상당히 정확하고 신뢰할 수 있는 구현이어야 합니다.
적절한 경우 ECBS( 유럽 은행 표준 위원회 ) 권장 사항도 포함되었습니다.
사양이 자주 변경되기 때문에 최근 새 버전이 출시된 경우 100% 최신 상태가 아닐 수 있다는 점을 염두에 두시기 바랍니다. 하지만 최선을 다하겠습니다. 현재 우리는 2020년 1월 릴리스를 최신 상태로 생각하고 있습니다. PDF 릴리스 #86.
LGPL에 따라 라이선스가 부여되어 상업용 환경에서 무료로 사용할 수 있습니다.
다음 116개 공식 및 비공식 IBAN 국가가 지원됩니다.
Composer를 사용하는 경우 composer require globalcitizen/php-iban
실행하면 됩니다. 보고된 바에 따르면 (및)은 작곡가를 통해 수행되었습니다.
(아직 composer
없고 안전하지 않은 방식으로 설치하려는 경우(권장하지는 않지만 편리함) curl -sS https://getcomposer.org/installer | php
또는 wget -O- https://getcomposer.org/installer | php
실행할 수 있습니다. wget -O- https://getcomposer.org/installer | php
그런 다음 composer.json
파일에 다음을 추가하세요.
// composer.json
{
"require" : {
"globalcitizen/php-iban" : "4.2.3"
}
}
그런 다음, 작곡가 composer.json
파일이 있는 디렉터리에서 composer
의 업데이트 명령을 실행하여 새 종속성을 설치할 수 있습니다.
# install
$ php composer.phar install
# update
$ php composer.phar update globalcitizen/php-iban
# or you can simply execute composer command if you set it to
# your PATH environment variable
$ composer install
$ composer update globalcitizen/php-iban
Packagist에서 이 라이브러리를 볼 수 있습니다.
일반 설치의 경우 git clone
명령을 사용합니다.
# HTTP
$ git clone https://github.com/globalcitizen/php-iban.git
# SSH
$ git clone [email protected]:globalcitizen/php-iban.git
또는 특정 개정 번호의 git
관리 저장소에 php-iban
라이브러리를 포함시키려면 기능에 따라 더 큰 시스템을 유지하면서 예측 가능한 방식으로 버전을 업데이트할 수 있습니다.
# enter your project's git repo
$ cd my-existing-project-with-a-git-repo/
# select an appropriate place to create the php-iban subdir
$ cd lib/
# add php-iban as a submodule
$ git submodule add https://github.com/globalcitizen/php-iban.git
# commit new submodule
$ git commit -m ' Add php-iban submodule '
그런 다음 처음으로 하위 모듈이 있는 git
프로젝트를 확인할 때 일반적으로 몇 가지 추가 단계를 수행해야 합니다.
# check out your project as normal
$ git clone [email protected]:your/project.git
# initialize submodules
$ git submodule init
# update submodules
$ git submodule update
이 단계를 건너뛰려면 체크아웃할 때 --recursive
인수를 git clone
에 추가하세요.
# check out your project, initialize and update all submodules
$ git clone --recursive [email protected]:your/project.git
나중에 프로젝트에서 최신 버전의 php-iban
사용하려면 다음을 실행하세요.
# fetch changes
$ git submodule update --remote php-iban
# commit
$ git commit -m ' Update php-iban submodule '
zip
또는 tar.gz
형식으로 최신 릴리스를 가져오세요.unzip filename.zip
를 사용하여 라이브러리를 추출합니다.libraries/php-iban
에서 php-iban
포함시키려면 다음 require_once() 문을 사용할 수 있습니다: <?php
require_once ( dirname ( __FILE__ ) . ' /../libraries/php-iban/php-iban.php ' );
# ... your code utilizing php-iban
?>
다음 표에서는 일반 프로젝트 정보와 지원되는 프로그래밍 패러다임을 기반으로 php-iban을 IBAN 관련 기능을 제공하는 다른 PHP 프로젝트와 비교합니다.
프로젝트 | 라이센스 | 프로세스 | OO | 시작했다 | 최신 | 별 | 보다 | 포크 | 설치 | 가정문화 | 뎁스 |
---|---|---|---|---|---|---|---|---|---|---|---|
PHP-IBAN | LGPL | ✔ | ✔ | 2009년 | 4.2.3 | 426 | 29 | 104 | ~700만+* | 글로벌* | 없음 |
이반 | MIT | ✘ | ✔ | 2013년 | 1.3.0 | 50 | 9 | 19 | 178.39k | 독일 사람 | 많이 |
ISO코드 | GPL3 | ✘ | ✔ | 2012 | 2.1.1 | 466 | 22 | 54 | 145,000 | 프랑스 국민 | 많이 |
SepaUtil의 | GPL3 | ✘ | ✔ | 2014년 | 1.2.3 | 8 | 4 | 3 | 25,000 | 독일 사람 | PHP 단위 |
심포니 | MIT | ✘ | ✔ | 2013년 | 3.3.6 | 15,000 | 1214 | 5.6k | 23M+ | 프랑스 국민 | 많이 |
참고:
이제 특징을 살펴보겠습니다.
+ | ISO | IANA | 세파 | ₶ | 우오 | MT | NC | ₴ | CB | 시간? | 기재 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
PHP-IBAN | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116: 오픈 소스 툴체인 및 문서가 포함된 전체 오류 수정 CSV |
이반 | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54: 부분적, 하드코딩됨, 출처가 모호함 |
ISO코드 | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66: 부분적, 하드코딩됨, 모호한 출처 |
SepaUtil의 | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89: 부분적, 하드코딩됨, 모호한 출처 |
심포니 | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95: 부분적, 하드코딩됨, 출처가 모호함 |
메모:
XXXXXXXXXXXXXXXX
대신 IBAN XXXX XXXX XXXX XXXX
- 훨씬 더 합리적입니다.간단히 말해서, Composer 사용자는 분명히 경쟁 라이브러리(특히 Iban)를 사용했지만 아마도 Composer 파일을 통합하는 데 시간이 걸렸기 때문일 것입니다. 이러한 라이브러리는 종종 완전한 기능을 갖춘 웹 프레임워크이거나 의존성이 부담스럽고 성숙도가 낮으며 실패합니다. 자유 소프트웨어 기반에 대한 모자라기, 절차적 프로그래밍 패러다임을 지원하지 않음(AbstractProductClassMakerFactories가 이를 만족시키지 못하는 경우), 모호한 소스의 데이터 사용, 다음과 호환되지 않는 라이센스를 사용하는 경향이 있음 특정 상업적 용도로 사용되며 솔직히 기능이 부족합니다.
따라서 겁 없는 사용자라면... php-iban을 선택하십시오 . IBAN 및 IIBAN 처리를 위한 윤리적이고 기능적이며 미래지향적이며 번거로움이 적은 라이브러리입니다. 승리를 선택하세요! ;)
공식 소스의 국가 IBAN, BBAN 또는 국가 체크섬 문서 의 URL을 알고 있는 경우 문제 #39 및 문제 #41에서 알려 주시기 바랍니다.
페로 제도 (FO) 은행은 응답하지 않으며 저에게 연락을 주었던 덴마크 국립 은행도 응답하지 않습니다.
룩셈부르크 (LU)는 단일 체크섬 시스템을 준수하지 않는 것 같습니다. 일부 IBAN은 합리적으로 일반적인 시스템으로 유효성을 검사하지만 다른 IBAN은 그렇지 않거나 다른 시스템을 사용합니다. 룩셈부르크에 국가 체크섬 시스템이 있다는 제안은 사실 틀릴 수도 있습니다. 여기에는 몇 가지 설명이 필요합니다. 누군가가 공식 성명을 파헤칠 수 있기를 바랍니다.
모리타니 (MR)에는 이중 문자 체크섬 시스템이 있지만 예시 IBAN은 예상되는 시스템인 MOD97-10과 일치하지 않습니다. 이전에는 IBAN이 항상 '13' 체크섬 숫자로 고정되어 있었지만, 레지스트리 v66부터는 이제 동적이므로 변경되었거나 적어도 국가적으로 완화된 체크섬 시스템을 의미합니다.
검색하는 데 시간을 할애할 의향이 있다면 대부분의 국가, 특히 소규모 국가에 대해 더 많은 IBAN 테스트를 수행할 수 있습니다.
버전 4.2.3이 출시되었습니다.
버전 4.2.2가 출시되었습니다.
버전 4.2.1이 출시되었습니다.
버전 4.2.0이 출시되었습니다.
버전 4.1.1이 출시되었습니다.
버전 4.1.0이 출시되었습니다.
버전 4.0.0이 출시되었습니다.
버전 3.0.3이 출시되었습니다.
버전 3.0.2가 출시되었습니다.
버전 3.0.0이 출시되었습니다.
버전 2.8.2가 출시되었습니다.
버전 2.8.1이 출시되었습니다.
TL
BBAN 형식 정규식은 불필요한 공백을 제거했습니다(IBAN 유효성 검사에는 영향을 미치지 않음). (@DanyCorbineauBappli에게 감사드립니다) 버전 2.8.0이 출시되었습니다.
버전 2.7.5가 출시되었습니다.
버전 2.7.4가 출시되었습니다.
iban_to_obfsucated_format()
또는 ObfuscatedFormat()
버전 2.7.3이 출시되었습니다.
버전 2.7.2가 출시되었습니다.
버전 2.7.1이 출시되었습니다.
버전 2.7.0이 출시되었습니다.
버전 2.6.9가 출시되었습니다.
SM
)에 대한 국가 체크섬 구현이 추가되었습니다.버전 2.6.8이 출시되었습니다.
IT
)에 대한 국가 체크섬 구현이 추가되었습니다.버전 2.6.7이 출시되었습니다.
SK
)에 대한 국가 체크섬 구현이 추가되었습니다.버전 2.6.6이 출시되었습니다.
ini_set
활성화되지 않은 환경에서 발생하는 대량 오류를 수정했습니다.버전 2.6.5가 출시되었습니다.
gmp
확장이 활성화되었을 때 잘못된 경고가 수정되었습니다.버전 2.6.4가 출시되었습니다.
bcmath
확장에 대한 가짜 종속성을 제거합니다.버전 2.6.3이 출시되었습니다.
버전 2.6.2가 출시되었습니다.
버전 2.6.1이 출시되었습니다.
버전 2.6.0이 출시되었습니다.
버전 2.5.9가 출시되었습니다.
버전 2.5.8이 출시되었습니다.
버전 2.5.7이 출시되었습니다.
버전 2.5.6이 출시되었습니다.
버전 2.5.5가 출시되었습니다.
버전 2.5.4가 출시되었습니다.
버전 2.5.3이 출시되었습니다.
버전 2.5.2가 출시되었습니다.
버전 2.5.1이 출시되었습니다.
908
) 은행에는 국가 체크섬이 손상된 여러 개의 라이브 IBAN이 있는 것으로 나타나므로 해당 은행 계좌의 모든 국가 체크섬을 무시합니다.버전 2.5.0이 출시되었습니다.
INGB
(ING 은행)에 대한 예외 포함01
(슬로베니아 은행)에 대한 예외 포함utils/example-ibans
에서 유지 관리되고 있습니다. 이는 향후 연구를 단순화해야 합니다.버전 2.4.20이 출시되었습니다.
버전 2.4.19가 출시되었습니다.
버전 2.4.18이 출시되었습니다.
버전 2.4.17이 출시되었습니다.
01
)은 특별한 경우로 국가 체크섬 제도를 구현하지 않습니다. 슬로베니아 국가 체크섬 구현에 예외가 추가되었습니다.버전 2.4.16이 출시되었습니다.
버전 2.4.15가 출시되었습니다.
버전 2.4.14가 출시되었습니다.
버전 2.4.13이 출시되었습니다.
iban_mistranscription_suggestions()
함수는 이제 느슨하게 형식화된 IBAN 유사 문자열을 전달할 때 올바르게 작동합니다._verhoeff()
가 이제 유효하지 않은 입력이 전달될 때 올바르게 작동합니다.버전 2.4.12가 출시되었습니다.
버전 2.4.11이 출시되었습니다.
central_bank_url
및 central_bank_name
에서 각 국가의 중앙 은행 이름과 URL을 쿼리할 수 있습니다. 예:버전 2.4.10이 출시되었습니다.
currency_iso4217
해당 국가의 공식 통화를 ISO4217 알파 코드 형식으로 저장합니다. 예를 들면 다음과 같습니다.버전 2.4.9가 출시되었습니다.
parent_registrar
IBAN 국가의 상위 레지스트라 IBAN 국가를 저장합니다. 예를 들면 다음과 같습니다.버전 2.4.8이 출시되었습니다.
버전 2.4.7이 출시되었습니다.
버전 2.4.6이 출시되었습니다.
버전 2.4.5가 출시되었습니다.
버전 2.4.4가 출시되었습니다.
버전 2.4.3이 출시되었습니다.
버전 2.4.2가 출시되었습니다.
버전 2.4.1이 출시되었습니다.
버전 2.4.0이 출시되었습니다.
iban_{set|find|verify}_nationalchecksum()
및 해당 OO 래퍼 기능을 통해 IBAN 이전 국가 체크섬 알고리즘을 제공한 일부 국가에 대해 올바른 국가 체크섬을 결정, 확인 및 설정할 수 있습니다. 현재 벨기에(BE), 프랑스(FR), 스페인(ES)이 지원됩니다. 귀하의 국가가 지원되는지 확인하려면 문제 #39 및 문제 #41을 참조하세요. 버전 2.3.1이 출시되었습니다.
버전 2.3.0이 출시되었습니다.
버전 2.2.0이 출시되었습니다.
버전 2.1.9가 출시되었습니다.
버전 2.1.8이 출시되었습니다.
버전 2.1.7이 출시되었습니다.
iban_get_nationalchecksum_part()
, iban_country_get_nationalchecksum_start_offset()
및 iban_country_get_nationalchecksum_stop_offset()
및 해당 OO 래퍼 함수 $myIban->NationalChecksum()
, $myCountry->NationalChecksumStartOffset()
및 $mycountry->NationalChecksumStopOffset()
통해 쿼리할 수 있습니다. 테스트 및 문서가 업데이트되었습니다. 국가 체크섬 알고리즘에 대해 아는 것이 있으면 문제 #39에 도움을 주세요.버전 2.1.6이 출시되었습니다.
machine_format_only
검증을 위해 OO 래퍼 및 문서가 업데이트되었습니다.버전 2.1.5가 출시되었습니다.
verify_iban()
에 대한 추가 엄격한 machine_format_only
모드입니다.버전 2.1.4가 출시되었습니다.
버전 2.1.3이 출시되었습니다.
iban_to_human_format()
의 동작이 수정되었습니다.버전 2.1.2가 출시되었습니다. 알려진 모든 비공식 IBAN 국가 코드가 이제 통합되었습니다. 사소한 문서 업데이트와 보고된 코소보 이름 단축 외에도 이 버전에는 다음이 추가됩니다.
버전 2.1.1이 출시되었습니다. 현재 비공식 IBAN 국가 코드가 통합되고 있으며 프로세스가 계속 진행 중입니다. 이 버전에는 다음이 추가됩니다.
버전 2.1.0이 출시되었습니다.
현재 비공식 IBAN 국가 코드가 통합되고 있으며 프로세스가 계속 진행 중입니다. 국가가 SWIFT에서 발행한 공식 기록인지 여부를 확인하기 위한 새로운 플래그가 생성되었습니다. 이에 따라 다음과 같은 새로운 국가가 추가되었습니다.
또한 IIBAN(AA) 레코드는 비공식으로 표시되었으며 docs/TODO
에 나열된 기능은 Github 문제로 마이그레이션되었으며 해당 파일이 삭제되었습니다.
버전 2.0.1이 출시되었습니다. 이는 실제 테스트, 작곡가 지원 및 최종 변경 사항을 따라잡는 것을 축하하기 위한 것입니다. 이 버전은 국가에 대한 변경 또는 추가를 포함하여 현재의 모든 레지스트리 변경 사항을 포함하여 최신 상태여야 합니다.
버전 1.6.0이 출시되었습니다. 이 버전에는 향상된 테스트 루틴, 확장된 문서 및 수정된 문서뿐만 아니라 더 많은 레지스트리 수정 사항(잘못된 데이터가 있는 새로 추가된 지역, 샘플 IBAN의 잘못된 체크섬 등)이 포함되어 있습니다. 모든 사용자는 업그레이드하는 것이 좋습니다. 이제 Travis CI를 사용하여 자동화된 테스트 스크립트 실행을 통해 모든 커밋된 코드에 추가적인 견고성을 제공합니다. 안타깝게도 Travis가 빌드 로그를 깨뜨린 정확한 시간(https://www.traviscstatus.com/incidents/fcllblkclgmb)을 선택하여 모든 소란이 무엇인지 확인했기 때문에 예상보다 오래 걸렸습니다. 예기치 않게 물건을 깨는 데 좋습니다 . 그들은 뭔가를 숨기고 싶어했기 때문에 말 그대로 디버그 출력이 전혀 없었고 나는 이것이 내 잘못이라고 믿게 되었습니다. 동료 프로그래머 여러분, 보십시오. 이제 신비로운 실패의 시대가 시작됩니다.
버전 1.5.0이 출시되었습니다. 코드 변경 사항은 없지만 이제 http://packagist.org/ 통합이 완료되어 작동이 시작되기를 바랍니다. packagist를 사용하는 경우 이제 composer require globalcitizen/php-iban
실행하여 프로젝트에 라이브러리를 추가할 수 있습니다(길을 알려준 @acoulton에게 감사드립니다).
버전 1.4.9는 새로운 Github 기반 릴리스 프로세스를 사용하여 릴리스되었습니다. 이것이 라이브러리를 다른 소프트웨어와 번들로 묶는 사람들에게 견고한 기준점이 되기를 바랍니다. 또한 통합을 쉽게 하기 위해 기여된 작곡가 메타데이터 파일도 있습니다. 새로운 IBAN 레지스트리 URL이 통합되었습니다. 이전 SVN 태그/트렁크 구조를 제거했습니다.
SWIFT URL을 IBAN 페이지로 수정했습니다. 잘못된 표기 오류 지원을 강조했습니다.
마지막으로 Google은 code.google.com
종료하고 Github로 마이그레이션했습니다! 이전 trunk
/ tag
구조( svn
에 남아 있는)가 정리되고 이 문서가 이전 위키 형식에서 마크다운으로 번역되면 새 버전이 발행됩니다.
버전 1.4.6이 출시되었습니다:
안타깝게도 Google은 이제 Google 드라이브를 사용하려면 code.google.com
프로젝트를 요구합니다. Google 드라이브를 사용해 보았습니다(새 계정 가입, 이메일 처리, 로봇 취급 받기, 터치하기 쉬운 새로운 인터페이스 배우기, '공유 한도가 초과되었습니다'와 같은 의미 없는 오류 메시지 받기). 새 계정에 2x290KB 파일을 생성하라는 지시를 받았음) 인내심을 완전히 잃었습니다.
따라서 지금은 대신 git
사용하여 다운로드하면 됩니다. 곧 php-iban
Github로 마이그레이션할 예정입니다. Google은 최근 정말 골치를 앓고 있습니다. Google+와 Google 드라이브 정크, Picasa를 망치고 주의력 부족으로 Sketchup을 망치는 등의 문제로 인해 그들은 어떻게 생각하고 있습니까?
버전 1.4.5가 출시되었습니다:
버전 1.4.4가 출시되었습니다:
프로젝트 소스 코드 저장소가 svn
(ugh)에서 git
(yay!) 로 전환되었습니다 .
버전 1.4.3이 출시되었습니다.
docs/COMEDY-OF-ERRORS
의 문서와 레지스트리 컨버터 내에서 인라인으로 공식 IBAN 레지스트리 문서 에이 문제와 추가 문제를 문서화하십시오.버전 1.4.2가 출시되었습니다.
버전 1.4.1이 출시되었습니다.
$__disable_iiban_gmp_extension=true;
)버전 1.4.1은 여전히 준비 중이며 몇 가지 버그를 찌르고 레지스트리를 업데이트하고 있습니다. 한편, 코드 캔디 블로그에 소개 된 것은 저의 관심을 끌었습니다! http://www.codecandies.com/2012/05/30/no-exceptions/ Hooray를 독일의 유머 감각! 하하하.
버전 1.4.0이 출시되었습니다.
VERSION
파일을 추가합니다. 버전 1.3.9가 출시되었습니다.
버전 1.3.8이 출시되었습니다.
버전 1.3.7이 출시되었습니다.
버전 1.3.6이 출시되었습니다.
버전 1.3.5가 출시되었습니다.
버전 1.3.4가 출시되었습니다.
버전 1.3.3이 출시되었습니다.
버전 1.3.2가 출시되었습니다.
버전 1.3.1이 출시되었습니다.
버전 1.3.0이 출시되었습니다. 이 릴리스는 오류 오류 제안 지원을 추가합니다.
버전 1.2.0이 출시되었습니다. 이 릴리스는 http://tools.ietf.org/html/draft-iiban-01의 현재 IIBAN 인터넷 초안에 따라 인터넷 국제 은행 계좌 번호 (IIBAN) 지원을 추가합니다.
버전 1.1.2가 출시되었습니다. 많은 기본 PHP 설치에 대한 배포를 단순화하기 위해 기본 라이브러리 파일에 긴 열린 태그를 추가합니다.
버전 1.1.1이 출시되었습니다. 이것은 새로운 OO 래퍼의 함수 호출에서 오타를 수정합니다. 비 OO 사용자는 업그레이드 할 필요가 없습니다.
버전 1.1.0이 출시되었습니다. 이 버전은 객체 지향 래퍼 라이브러리 및 관련 업데이트를 문서화 및 테스트 스크립트에 추가합니다. 기존 사용자가 업그레이드하는 것은 중요하지 않습니다.
버전 1.0.0이 출시되었습니다. 이 버전에는 다음 변경 사항이 포함됩니다.
iban_country_is_sepa($iban_country)
iban_to_human_format($iban)
함수와 함께 인간 형식으로 (4 자 각 문자마다 추가)이달 초 ... 소규모 유지 보수 릴리스는 중요하지 않습니다.
*이제 http://groups.google.com/group/php-iban-users 메일 링리스트가 있습니다. 의견, 쿼리 또는 제안을 게시하십시오. 라이브러리 사용 방법을 알고 싶습니다. 현재 까지이 프로젝트는 400 개가 넘는 다운로드에 도달했으며 하루에 두 개 이상의 새로운 사용자를 통해 여전히 강세를 보이고 있습니다.
* 버전 12가 출시되었습니다. 레지스트리 파일은 부분적으로 사용자 보고서의 결과로 개선되었으며 부분적으로 버전 11에 대한 자동 테스트를 수행하는 동안 발견되지 않은 문제의 결과로 개선되었습니다.
수정 된 헤더 행 두 열이 제목 ( bban_length
및 iban_length
)에 표시되지 않았습니다. 그들은 이제 추가되었습니다.
프랑스 영토 (PF, TF, YT, NC, PM, WF)의 레지스트리 항목 수정 프랑스 영토는 신속한 사양 TextFile에 명시 적으로 포함되지 않습니다. 그들은 해당 항목에 대한 구조화되지 않은 의견에 따라 프랑스에서 복제되었습니다. 그런 다음 IBAN은 체크섬을 재생하지 않고 국가 접두사를 단순히 수정함으로써 예시적인 목적을 위해 만들어졌습니다. 이 영토에 포함 된 이반 사례는 이제 정확해야합니다.
지브롤터와 헝가리 (GI, HU)는 두 영토 모두 초기 문서 변환 후 정기적 인 표현에 불필요한 결장을 가졌던 버그를 수정하여 해당 국가의 모든 IBAN에 대한 검증 실패를 일으켰습니다.
모리셔스 (MU)는 31에서 30까지의 IBAN 길이 기대치를 수정했습니다.
스웨덴 (SE) 사례 IBAN은 개발 초기에 IBAN 사양 예에서 수동으로 수정되었으며 체크섬을 통과하지 못했습니다. IBAN 공식 사례가 복원되었습니다.
튀니지 (TN)는 초기 문서 변환의 버그로 인한 부적절한 유효성 검사 문자열을 수정했습니다 (IBAN 형식 특화제에서 일반 표현 변환 기능).
require_once ( ' php-iban.php ' );
# ... your code utilising IBAN functions...
# Verify an IBAN number.
# An optional second argument specifies $machine_format_only (default is false)
# If true, the function will not tolerate unclean inputs
# (eg. spaces, dashes, leading 'IBAN ' or 'IIBAN ', lower case)
# If false (default), input can be in either:
# - printed ('IIBAN xx xx xx...' or 'IBAN xx xx xx...'); or
# - machine ('xxxxx')
# ... string formats.
# Returns true or false.
if (! verify_iban ( $ iban , $ machine_format_only = false )) {
# ...
}
# Check the checksum of an IBAN - code modified from Validate_Finance PEAR class
if (! iban_verify_checksum ( $ iban )) {
# ...
}
# Suggest what the user really meant in the case of transcription errors
$ suggestions = iban_mistranscription_suggestions ( $ bad_iban );
if ( count ( $ suggestions ) == 1 ) {
print " You really meant " . $ suggestions [ 0 ] . " , right? n" ;
}
# Find the correct checksum for an IBAN
$ correct_checksum = iban_find_checksum ( $ iban );
# Set the correct checksum for an IBAN
$ fixed_iban = iban_set_checksum ( $ iban );
# Verify the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system and we have implemented.
# (Returns '' if unimplemented, true or false)
$ result = iban_verify_nationalchecksum ( $ iban );
if ( $ result == '' ) {
print " National checksum system does not exist or remains unimplemented for the country of IBAN ' $ iban '. n" ;
}
elseif ( $ result == true ) {
print " IBAN ' $ iban ' passes the national checksum algorithm for its country. n" ;
}
else {
print " IBAN ' $ iban ' FAILS the national checksum algorithm for its country. n" ;
}
# Set the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system, where that system results in a dedicated checksum
# substring, and that we have implemented.
# (Returns '' if unimplemented, or the corrected string)
# (NOTE: On success, the function also subsequently recalculates the IBAN-level checksum)
$ national_checksum_algorithm_valid_iban = iban_set_nationalchecksum ( $ iban );
# Determine, but do not set, the pre-IBAN era, BBAN-level national checksum
# for those countries that have such a system, where that system results in
# a dedicated checksum substring, and that we have implemented.
# (Returns '' if unimplemented, or the expected national checksum substring)
$ expected_national_checksum = iban_find_nationalchecksum ( $ iban );
# Convert an IBAN to machine format. To do this, we
# remove IBAN from the start, if present, and remove
# non basic roman letter / digit characters
$ machine_iban = iban_to_machine_format ( $ iban );
# Convert an IBAN to human format. To do this, we
# add a space every four characters.
$ human_iban = iban_to_human_format ( $ iban );
# Convert an IBAN to obfuscated format for relative
# identification. To do this, we replace all but the
# leading country code and final four characters with
# asterisks.
$ obfuscated_iban = iban_to_obfuscated_format ( $ iban );
# Get the name of an IBAN country
$ country_name = iban_country_get_country_name ( $ iban_country );
# Get the domestic example for an IBAN country
$ country_domestic_example = iban_country_get_domestic_example ( $ iban_country );
# Get the BBAN example for an IBAN country
$ country_bban_example = iban_country_get_bban_example ( $ iban_country );
# Get the BBAN format (in SWIFT format) for an IBAN country
$ country_bban_format_as_swift = iban_country_get_bban_format_swift ( $ iban_country );
# Get the BBAN format (as a regular expression) for an IBAN country
$ country_bban_format_as_regex = iban_country_get_bban_format_regex ( $ iban_country );
# Get the BBAN length for an IBAN country
$ country_bban_length = iban_country_get_bban_length ( $ iban_country );
# Get the IBAN example for an IBAN country
$ country_iban_example = iban_country_get_iban_example ( $ iban_country );
# Get the IBAN length for an IBAN country
$ country_iban_length = iban_country_get_iban_length ( $ iban_country );
# Get the IBAN format (in SWIFT format) for an IBAN country
$ country_iban_format_as_swift = iban_country_get_iban_format_swift ( $ iban_country );
# Get the IBAN format (as a regular expression) for an IBAN country
$ country_iban_format_as_regex = iban_country_get_iban_format_regex ( $ iban_country );
# Determine whether an IBAN country is a member of SEPA (Single Euro Payments Area)
if (! iban_country_is_sepa ( $ iban_country )) {
# ... do something xenophobic ...
}
# Get the bank ID start offset for an IBAN country
$ country_bankid_start_offset = iban_country_get_bankid_start_offset ( $ iban_country );
# Get the bank ID stop offset for an IBAN country
$ country_bankid_stop_offset = iban_country_get_bankid_stop_offset ( $ iban_country );
# Get the branch ID start offset for an IBAN country
$ country_branchid_start_offset = iban_country_get_branchid_start_offset ( $ iban_country );
# Get the branch ID stop offset for an IBAN country
$ country_branchid_stop_offset = iban_country_get_branchid_stop_offset ( $ iban_country );
# Get the registry edition for an IBAN country (note: IIBAN country 'AA' returns 'N/A')
$ country_registry_edition = iban_country_get_registry_edition ( $ iban_country );
# Determine whether an IBAN country is an official, SWIFT issued country record
if (! iban_country_get_country_swift_official ( $ iban_country )) {
# ... do something against decentralization ...
}
# Get the IANA code for an IBAN country
$ country_iana = iban_country_get_iana ( $ iban_country );
# Get the ISO3166-1 alpha-2 code for an IBAN country
$ country_iso3166 = iban_country_get_iso3166 ( $ iban_country );
# Get the parent registrar IBAN country of an IBAN country
# (Returns '' in the normal case that the country is independently registered)
$ registrar_country = iban_country_get_parent_registrar ( $ iban_country );
if ( $ registrar_country == '' ) {
print " The mighty nation of ' $ iban_country ' stands strong and proud... n" ;
print " ... with its own heirarchy of bureaucrats! n" ;
}
else {
print " It has been foretold that the downtrodden natives of ' $ iban_country ' will one day n" ;
print " rise up and throw off the shackles of the evil ' $ registrar_country ' oppressors! n" ;
}
# Get the official currency of an IBAN country as an ISO4217 alpha code
# (Returns '' in the Internet (IIBAN) case, ie. no official currency)
$ official_currency = iban_country_get_currency_iso4217 ( $ iban_country );
if ( $ official_currency == '' ) {
print " There is no official currency for the IBAN country ' $ iban_country '. n" ;
}
# Get the URL of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_url = iban_country_get_central_bank_url ( $ iban_country );
# Get the name of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_name = iban_country_get_central_bank_name ( $ iban_country );
# Get the membership type of the country
# There are four types of memberships:
# * EU-Member States (eu_member)
# * EFTA-Member States (efta_member)
# * Other Memberships, which have monetary agreements with the EU (other_member)
# * Non-Members, which don't belong to the EU or have agreements (non_member)
$ country_membership = iban_country_get_membership ( $ iban_country );
# Get if the country is a eu member state
# (Note: Returns true, if member state; false otherwise)
$ country_membership = iban_country_get_is_eu_member ( $ iban_country );
# Get an array of all the parts from an IBAN
$ iban_parts = iban_get_parts ( $ iban );
# Get the country part from an IBAN
$ iban_country = iban_get_country_part ( $ iban );
# Get the BBAN part from an IBAN
$ bban = iban_get_bban_part ( $ iban );
# Get the Bank ID (institution code) from an IBAN
$ bank = iban_get_bank_part ( $ iban );
# Get the Branch ID (sort code) from an IBAN
# (NOTE: only available for some countries)
$ sortcode = iban_get_branch_part ( $ iban );
# Get the (branch-local) account ID from an IBAN
# (NOTE: only available for some countries)
$ account = iban_get_account_part ( $ iban );
# Get the checksum part from an IBAN
$ checksum = iban_get_checksum_part ( $ iban );
# Get the national checksum part from an IBAN (if it exists)
$ checksum = iban_get_nationalchecksum_part ( $ iban );
OO 사용은 모델을 과도하게 사용하는 오늘날의 추세가 있기 때문에 낙담합니다. 그러나 OO PHP를 선호하는 경우 아래에 설명 된 물체 지향 래퍼를 사용하십시오.
require_once ( ' oophp-iban.php ' );
# ... your code utilising object oriented php iban functions...
# Example instantiation
$ iban = ' AZ12345678901234 '
$ myIban = new IBAN ( $ iban );
# Verify an IBAN number.
# Tolerates spaces, prefixes "IBAN ...", dashes, lowercase input, etc.
# Returns true or false.
if (! $ myIban -> Verify ()) {
# ...
}
# Verify an IBAN number in machine format only.
# Does not tolerate lowercase input, separators, whitespace or prefixes.
# Returns true or false.
if (! $ myIban -> VerifyMachineFormatOnly ()) {
# ...
}
# Check the checksum of an IBAN - code modified from Validate_Finance PEAR class
if (! $ myIban -> VerifyChecksum ()) {
# ...
}
# Suggest what the user really meant in the case of mistranscription errors
$ suggestions = $ badIban -> MistranscriptionSuggestions ();
if ( count ( $ suggestions )== 1 ) {
print " You really meant " . $ suggestions [ 0 ] . " , right? n" ;
}
# Find the correct checksum for an IBAN
$ correct_checksum = $ myIban -> FindChecksum ();
# Set the correct checksum for an IBAN
$ fixed_iban = $ myIban -> SetChecksum ()
# Verify the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system and we have implemented.
# (Returns '' if unimplemented, true or false)
$ result = $ myIban -> VerifyNationalChecksum ();
if ( $ result == '' ) {
print " National checksum system does not exist or remains unimplemented for this IBAN's country. n" ;
}
elseif ( $ result == true ) {
print " IBAN passes the national checksum algorithm for its country. n" ;
}
else {
print " IBAN FAILS the national checksum algorithm for its country. n" ;
}
# Set the pre-IBAN era, BBAN-level national checksum for those countries that
# have such a system, where that system results in a dedicated checksum
# substring, and that we have implemented.
# (Returns '' if unimplemented, or the corrected string)
# (NOTE: On success, the function also subsequently recalculates the IBAN-level checksum)
$ myIban -> SetNationalChecksum ();
# Determine, but do not set, the pre-IBAN era, BBAN-level national checksum
# for those countries that have such a system, where that system results in
# a dedicated checksum substring, and that we have implemented.
# (Returns '' if unimplemented, or the expected national checksum substring)
$ national_checksum = $ myIban -> FindNationalChecksum ();
# Convert an IBAN to machine format. To do this, we
# remove IBAN from the start, if present, and remove
# non basic roman letter / digit characters
$ machine_iban = $ myIban -> MachineFormat ();
# Convert an IBAN to human format. To do this, we
# add a space every four characters.
$ human_iban = $ myIban -> HumanFormat ();
# Convert an IBAN to obfuscated format for relative
# identification. To do this, we replace all but the
# leading country code and final four characters with
# asterisks.
$ obfsucated_iban = $ myIban -> ObfuscatedFormat ();
# To list countries, use the IBAN Class...
$ myIban -> Countries ();
# ... everything else is in the IBANCountry class.
# Example instantiation
$ countrycode = ' DE ' ;
$ myCountry = new IBANCountry ( $ countrycode );
# Get the country code of an IBAN country
$ country_code = $ myCountry -> Code ();
# Get the name of an IBAN country
$ country_name = $ myCountry -> Name ();
# Get the domestic example for an IBAN country
$ country_domestic_example = $ myCountry -> DomesticExample ();
# Get the BBAN example for an IBAN country
$ country_bban_example = $ myCountry -> BBANExample ();
# Get the BBAN format (in SWIFT format) for an IBAN country
$ country_bban_format_as_swift = $ myCountry -> BBANFormatSWIFT ();
# Get the BBAN format (as a regular expression) for an IBAN country
$ country_bban_format_as_regex = $ myCountry -> BBANFormatRegex ();
# Get the BBAN length for an IBAN country
$ country_bban_length = $ myCountry -> BBANLength ();
# Get the IBAN example for an IBAN country
$ country_iban_example = $ myCountry -> IBANExample ();
# Get the IBAN length for an IBAN country
$ country_iban_length = $ myCountry -> IBANLength ();
# Get the IBAN format (in SWIFT format) for an IBAN country
$ country_iban_format_as_swift = $ myCountry -> IBANFormatSWIFT ();
# Get the IBAN format (as a regular expression) for an IBAN country
$ country_iban_format_as_regex = $ myCountry -> IBANFormatRegex ();
# Determine whether an IBAN country is a member of SEPA (Single Euro Payments Area)
if (! $ myCountry -> IsSEPA ()) {
# ... do something xenophobic ...
}
# Get the bank ID start offset for an IBAN country
$ country_bankid_start_offset = $ myCountry -> BankIDStartOffset ();
# Get the bank ID stop offset for an IBAN country
$ country_bankid_stop_offset = $ myCountry -> BankIDStopOffset ();
# Get the branch ID start offset for an IBAN country
$ country_branchid_start_offset = $ myCountry -> BranchIDStartOffset ();
# Get the branch ID stop offset for an IBAN country
$ country_branchid_stop_offset = $ myCountry -> BranchIDStopOffset ();
# Get the national checksum start offset for an IBAN country
$ country_nationalchecksum_start_offset = $ myCountry -> NationalChecksumStartOffset ();
# Get the national checksum stop offset for an IBAN country
$ country_nationalchecksum_stop_offset = $ myCountry -> NationalChecksumStopOffset ();
# Get the registry edition for an IBAN country (note: IIBAN country 'AA' returns 'N/A')
$ country_registry_edition = $ myCountry -> RegistryEdition ();
# Determine whether an IBAN country is an official, SWIFT issued country record
if (! $ myCountry -> SWIFTOfficial ()) {
# ... do something against decentralization ...
}
# Get the IANA code for an IBAN country
$ country_iana = $ myCountry -> IANA ();
# Get the ISO3166-1 alpha-2 code for an IBAN country
$ country_iso3166 = $ myCountry -> ISO3166 ();
# Get the parent registrar IBAN country of an IBAN country
# (Returns '' in the normal case that the country is independently registered)
$ registrar_country = $ myCountry -> ParentRegistrar ();
if ( $ registrar_country == '' ) {
print " The mighty nation of ' $ iban_country ' stands strong and proud... n" ;
print " ... with its own heirarchy of bureaucrats! n" ;
}
else {
print " It has been foretold that the downtrodden natives of ' $ iban_country ' will one day n" ;
print " rise up and throw off the shackles of the evil ' $ registrar_country ' oppressors! n" ;
}
# Get the official currency of an IBAN country as an ISO4217 alpha code
# (Returns '' in the Internet (IIBAN) case, ie. no official currency)
$ official_currency = $ myCountry -> CurrencyISO4217 ();
if ( $ official_currency == '' ) {
print " There is no official currency for the IBAN country ' $ iban_country '. n" ;
}
# Get the URL of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_url = $ myCountry -> CentralBankURL ();
# Get the name of an IBAN country's central bank
# (Note: Returns '' if there is no central bank. Also, note that
# sometimes multiple countries share one central bank)
$ central_bank_name = $ myCountry -> CentralBankName ();
# Get an array of all the parts from an IBAN
$ iban_parts = $ myIban -> Parts ();
# Get the country part from an IBAN
$ iban_country = $ myIban -> Country ();
# Get the checksum part from an IBAN
$ checksum = $ myIban -> Checksum ();
# Get the BBAN part from an IBAN
$ bban = $ myIban -> BBAN ();
# Get the Bank ID (institution code) from an IBAN
$ bank = $ myIban -> Bank ();
# Get the Branch ID (sort code) from an IBAN
# (NOTE: only available for some countries)
$ sortcode = $ myIban -> Branch ();
# Get the (branch-local) account ID from an IBAN
# (NOTE: only available for some countries)
$ account = $ myIban -> Account ();
# Get the national checksum part from an IBAN
# (NOTE: only available for some countries)
$ checksum = $ myIban -> NationalChecksum ();
우리의 접근 방식과 기능이 이러한 모든 라이브러리와 어떻게 호의적으로 비교되는지 직접 확인하십시오 ...
언어 | 도서관 |
---|---|
기음# | Iban-Api-Net |
자바 | Iban-Api-Java |
자바 | IBAN4J |
자바 | 자바-이반 |
자바스크립트 | iban.js |
자바스크립트 | ng-iban |
객관적인 | Iban-Helper |
객관적인 | Ibanvalidation |
펄 | 다양한 CPAN 라이브러리 |
파이썬 | Django-localflavor |
파이썬 | 이반 제너레이터 |
루비 | 은행 |
루비 | Iban-tools |
루비 | Ibandit |
루비 | Ibanizator |
루비 | 이소 이반 |