ronanguilloux / isocodes
PHP 库 - ISO、国际金融、公共行政部门、GS1、书籍和音乐行业、多个国家的电话号码和邮编的验证器
Requires
- php: ^7.3|^8.0
- giggsey/libphonenumber-for-php: ^7.2|~8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: @stable
- pdepend/pdepend: ~2
- php-coveralls/php-coveralls: ^2
- phploc/phploc: ~7
- phpmd/phpmd: @stable
- phpunit/phpunit: ^9
- sebastian/phpcpd: ~6
- squizlabs/php_codesniffer: ~3
- symfony/phpunit-bridge: ^5
Suggests
- gourmet/validation: For CakePHP 3 integration
- pixelpeter/laravel5-isocodes-validation: For Laravel 5 integration
- sllh/iso-codes-validator: For Symfony or Silex integration with ease
README
PHP 库 - ISO、国际金融、公共行政部门、GS1、书籍行业、多个国家的电话号码和邮编的验证器
用法
// Sending letters to the Labrador Islands ? $isCanadian = ZipCode::validate('A0A 1A0', 'CA'); // Checking out your e-commerce shopping cart? $isBankable = CreditCard::validate('12345679123456'); // Transferring money worldwide? $isSwiftBic = SwiftBic::validate('CEDELULLXXX'); // Paying your taxes in Madrid? $isTaxableInSpain = Nif::validate('A999999L'); // Receiving containers from Port of Shanghai? $isShippingContainerCode = Sscc::validate('806141411234567896'); // Publishing books? $isPublished = Isbn::validate('2-2110-4199-X') // Trading items with GTIN barcodes in GS1 system? $isBarcode = Ean13::validate('4719512002889') // Calling phone numbers in Palo Alto? $isPhonable = PhoneNumber::validate('+1-650-798-2800', 'US') // Buying Apple stocks? $isISIN = Isin::validate('US0378331005'); // Apple Inc. (AAPL) // Trading Apple products? $isCUSIP = Cusip::validate('037833100'); // Apple Inc. (AAPL) // Checking your iPhone device is valid? $isDevice = Imei::validate('352066060926230'); // Selling your Honda Civic? $isVin = VinNA::validate('1HGBH41JXMN109186');
可用的 ISO 代码验证
国际金融
- IBAN(需要
bcmath
PHP 扩展) - SWIFT/BIC
- BBAN(RIB,需要
bcmath
PHP 扩展) - 信用卡号码
- SEDOL(证券交易所代码)
制造业
- ISBN - 国际标准书号,10位和13位数字
- ISMN - 国际标准音乐号
- ISWC - 国际标准音乐作品代码
- IMEI - 国际移动设备身份码
- VIN - 车辆识别码 - ISO 3779 & ISO 4030
公共行政部门
- ISIN - 国际证券识别码
- 特定国家的增值税/税制:各种增值税号码格式
- 法国:社会保险号码 / INSEE,SIREN,SIRET,邮政编码,类型 1/2 规范 B2
- 美国:社会保险号码
- 英国:国家保险号码(NINO)
- 比利时:结构化通信("communication structurée")
- 西班牙:NIF,NIE(税务/外国身份证号码)& CIF(税务识别码)
- 荷兰:居民服务号码 / 公民服务号码(BSN)
- 芬兰:HETU,个人识别码(芬兰个人身份码)
- 瑞士:商业机构 UID(增值税)号码 / 企业识别号码
GS1 特定号码/标识符
- GTIN - 全球贸易项目编号:GTIN-8,GTIN-12,GTIN-13,GTIN-14
- GLN - 全球位置编号
- SSCC - 序列货物集装箱代码
- GRAI - 全球可回收资产标识符
- GSRN - 全球服务关系编号
- GDTI - 全球文档类型标识符
- UDI - 唯一设备标识(其中的 GTIN 部分)
- 较旧/已弃用的标识符,现在在 GTIN 中:EAN-8,EAN-13,UCC-13,UPC-A,DUN-14,ITF-14
杂项
- 175 多个国家的 ZIP 代码验证器
- 全球所有国家和地区的电话号码验证
每个代码都有自己的验证器。每个验证器都有一个单元测试用例来说明。
IsoCodes 与 PHP 项目积极支持的 PHP 所有版本兼容。
构建状态
在 Scrutinizer CI 上可用的结果持续检查(phpdoc,phpmd,phpcc 等)
bcmath 作为某些验证器的可选扩展
对于 IBAN & BBAN ISO 代码,PHP 必须使用 "--enable-bcmath" 编译以进行任意精度数学检查。通常,您已经在使用 PHP 版本中捆绑了 bcmath
,因为许多常见的 PHP 软件包(如 php-cli
、php-fpm
、php5-cgi
、libapache2-mod-php5
等)在稳定的 GNU/Linux 发行版中(如 Debian)已作为内置模块包含 bcmath
。
安装
通过 GitHub
$ git clone git@github.com:ronanguilloux/IsoCodes.git
自动加载是 PSR-0 友好的。
通过 Packagist 和 Composer
使用 Composer 需要 ronanguilloux/isocodes
的最新版本
$ composer require ronanguilloux/isocodes
包装器
使用 Symfony 验证器
安装 Soullivaneuh/IsoCodesValidator 以使 IsoCodes 在 Symfony 和 Silex 中作为验证器工作。
使用 CakePHP 3
安装 gourmet/validation 以使 IsoCodes 在 CakePHP 3 中作为验证器工作。
使用 Laravel
安装 pixelpeter/laravel5-isocodes-validation 以使 IsoCodes 在 Laravel 5 中作为验证器工作。
支持的 PHP 版本
- 7.3
- 7.4
单元测试
$ phpunit --testdox --coverage-text
制作工具
仅用于开发与贡献目的,Makefile 提供了各种工具以检查您的代码风格、质量以及测试覆盖率。
Usual tasks:
To initialize vendors: make
To check code quality: make quality
To run tests suite: make tests
To fix code style: make cs-fix
Other specific tasks:
To evaluate code coverage: make codecoverage
To run a simple continuous tests server: make continuous
To dry-fix code style issues: make dry-fix
To evaluate code quality stats: make stats
To update vendors using Composer: make update
质量保证报告
IsoCodes 的质量计划主要基于 phpunit:它运行 980+ 个单元测试,包括有效和无效的条目集。测试值主要是真实数据或来自标准文档的文档化示例,以及一些手动制作的值。
在 composer.json
中已包含这些 Php Quality Assurance Toolchain 库。
只需运行
$ make stats -i
XML 报告输出将生成在新的 ./build
文件夹中
使用 Coveralls.io 构建的代码覆盖率报告。有关如何使用 PHPUnit 生成此类代码覆盖率报告的说明,请参阅 如何生成此类代码覆盖率报告。
许可信息
- GNU GPL v3
- 您可以在以下位置找到此软件的副本:https://github.com/ronanguilloux/IsoCodes
贡献代码
问题队列可以在以下位置找到: https://github.com/ronanguilloux/IsoCodes/issues。请参阅 CONTRIBUTING.md。
特别感谢
贡献者列表:非常感谢所有人!
非常感谢 JetBrains PhpStorm 从一开始就赞助 IsoCode 库的开发!任何有被接受的 PR 的贡献者都可能获得 PhpStorm IDE 的开源许可证密钥。只需通过电子邮件 联系 Ronan 即可获取一个。