Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ronanguilloux/IsoCodes
PHP library - Validators for standards from ISO, International Finance, Public Administrations, GS1, Manufacturing Industry, Phone numbers & Zipcodes for many countries
https://github.com/ronanguilloux/IsoCodes
administrations gs1 gtin international-finance isocodes php
Last synced: 4 days ago
JSON representation
PHP library - Validators for standards from ISO, International Finance, Public Administrations, GS1, Manufacturing Industry, Phone numbers & Zipcodes for many countries
- Host: GitHub
- URL: https://github.com/ronanguilloux/IsoCodes
- Owner: ronanguilloux
- License: gpl-3.0
- Created: 2012-10-10T20:43:47.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2024-05-04T21:16:46.000Z (6 months ago)
- Last Synced: 2024-05-17T01:42:26.455Z (6 months ago)
- Topics: administrations, gs1, gtin, international-finance, isocodes, php
- Language: PHP
- Homepage:
- Size: 578 KB
- Stars: 788
- Watchers: 22
- Forks: 76
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-php - ISO-codes - A library for validating inputs according to standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries. (Table of Contents / Filtering and Validation)
- awesome-php-cn - ISO-codes - 图书馆为验证输入从ISO标准,国际金融,公共管理,GS1,图书行业,电话号码. (目录 / 过滤和验证 Filtering and Validation)
- awesome-projects - ISO-codes - A library for validating inputs according standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries. (PHP / Filtering and Validation)
- awesome-php - ISO-codes - A library for validating inputs according to standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries. (Table of Contents / Filtering, Sanitizing and Validation)
README
# IsoCodes
PHP library - Validators for standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries
## Usage
```php
// 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 Codes Validations available:
### International Finance
* IBAN (requires `bcmath` PHP extension)
* SWIFT/BIC
* BBAN (RIB, requires `bcmath` PHP extension)
* Credit Card number
* SEDOL (Stock Exchange codes)### Manufacturing Industries
* ISBN - International Standard Book Number, both 10 & 13 digits
* ISMN - International Standard Music Number
* ISWC - International Standard Musical Work Code
* IMEI - International Mobile Equipment Identity
* VIN - Vehicle Identification Number – ISO 3779 & ISO 4030### Public Administrations
* ISIN - International Securities Identification Number
* Country-specific VAT / tax system: various VAT number formats
* France: Numéro de Sécurité Sociale / INSEE, SIREN, SIRET, Codes postaux, Clef Type 1/2 Norme B2
* US: Social Security number
* UK: National Insurance Number (NINO)
* Belgium: Structured Ccommunication ("communication structurée")
* Spain: NIF, NIE (Número de Identificación Fiscal/Extranjero) & CIF (Código de identificación fiscal)
* Netherlands: Burgerservicenummer / Citizen Service Number (BSN)
* Finland: HETU, Henkilötunnus (Finnish personal identity code)
* Switzerland: Business Orgs UID (VAT) Number / Unternehmens-Identifikationsnummer### GS1 specific numbers/identifiers
* GTIN - Global Trade Item Number: GTIN-8, GTIN-12, GTIN-13, GTIN-14
* GLN - Global Location Number
* SSCC - Serial Shipping Container Code
* GRAI - Global Returnable Asset Identifier
* GSRN - Global Service Relation Number
* GDTI - Global Document Type Identifier
* UDI - Unique Device Identification (the GTIN part of it)
* Older/deprecated identifiers, now in GTIN: EAN-8, EAN-13, UCC-13, UPC-A, DUN-14, ITF-14### Miscellaneous
* ZIP code validators for 175+ countries
* Phone number validation for all countries/regions of the worldEach code has its own validator.
Each validator is illustrated by a unit test case.IsoCodes is compatible with all versions of PHP that are [actively supported](http://php.net/supported-versions.php) by the PHP project.
## Build status
[![License](https://poser.pugx.org/ronanguilloux/isocodes/license.svg)](https://packagist.org/packages/ronanguilloux/isocodes)
[![Latest Stable Version](https://poser.pugx.org/ronanguilloux/isocodes/v/stable.svg)](https://packagist.org/packages/ronanguilloux/isocodes)
[![Build Status](https://app.travis-ci.com/ronanguilloux/IsoCodes.svg?branch=master)](https://app.travis-ci.com/ronanguilloux/IsoCodes)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/ronanguilloux/IsoCodes/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/ronanguilloux/IsoCodes/?branch=master)
[![SymfonyInsight](https://insight.symfony.com/projects/fde42adb-344d-4055-b78d-20b598040ac8/mini.svg)](https://insight.symfony.com/projects/fde42adb-344d-4055-b78d-20b598040ac8)
[![Coverage Status](https://coveralls.io/repos/ronanguilloux/IsoCodes/badge.svg?branch=master)](https://coveralls.io/r/ronanguilloux/IsoCodes?branch=master)
[![Total Downloads](https://poser.pugx.org/ronanguilloux/isocodes/downloads)](https://packagist.org/packages/ronanguilloux/isocodes)
[![Monthly Downloads](https://poser.pugx.org/ronanguilloux/isocodes/d/monthly.png)](https://packagist.org/packages/ronanguilloux/isocodes)
[![Daily Downloads](https://poser.pugx.org/ronanguilloux/isocodes/d/daily.png)](https://packagist.org/packages/ronanguilloux/isocodes)Continously inspecting results (phpdoc, phpmd, phpcc, etc.) available on [Scrutinizer CI](https://scrutinizer-ci.com/g/ronanguilloux/IsoCodes/inspections)
## bcmath as an optional extension for certain validators
For IBAN & BBAN ISO-codes, PHP is required to be compiled with "--enable-bcmath" for arbitrary precision mathematic checks.
Usually, you already have `bcmath` bundled in your PHP version, since many common PHP packages (`php-cli`, `php-fpm`, `php5-cgi`, `libapache2-mod-php5`, etc.) in stable GNU/Linux distribution releases (such as Debian) are listed as having `bcmath` built in to them, as an included module.## Installing
### Via GitHub
```bash
$ git clone [email protected]:ronanguilloux/IsoCodes.git
```Autoloading is PSR-0 friendly.
### Via [Packagist](https://packagist.org/packages/ronanguilloux/isocodes) & [Composer](https://getcomposer.org/doc/00-intro.md)
Require the latest version of `ronanguilloux/isocodes` with Composer
```bash
$ composer require ronanguilloux/isocodes
```## Wrappers
### With Symfony Validator
Install [Soullivaneuh/IsoCodesValidator](https://github.com/Soullivaneuh/IsoCodesValidator)
to get IsoCodes working as Validator for **Symfony** and **Silex**.### With CakePHP 3
Install [gourmet/validation](https://github.com/gourmet/validation)
to get IsoCodes working with **CakePHP 3** as a validator.### With Laravel
Install [pixelpeter/laravel5-isocodes-validation](https://github.com/pixelpeter/laravel5-isocodes-validation)
to get IsoCodes working with **Laravel 5** as a validator.## Supported PHP versions
- 7.3
- 7.4## Unit testing
```bash
$ phpunit --testdox --coverage-text
```## Make utilities
For development & contribution purpose only,
a Makefile provides various tools to check your code style, quality & test coverage:```
Usual tasks:To initialize vendors: make
To check code quality: make quality
To run tests suite: make tests
To fix code style: make cs-fixOther 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
```## Quality assurance report
Isocodes quality plan is mainly based on phpunit: it runs 980+ unit tests,
with separated valid & invalid entry sets.
Test values are mainly real data or documented examples from standard documentation, and a few handmade values.The `composer.json` already includes these [Php Quality Assurance Toolchain](https://phpqa.io) libraries:
* [phploc](https://github.com/sebastianbergmann/phploc)
* [phpmd](https://github.com/phpmd/phpmd)
* [phpcpd](https://github.com/sebastianbergmann/phpcpd)
* [pdepend](https://github.com/pdepend/pdepend)
* [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)Just run:
```bash
$ make stats -i
```XML report outputs are then generated in a new `./build` folder
Code covering report built using [Coveralls.io](https://coveralls.io/r/ronanguilloux/IsoCodes).
[How-to generate such code coverage report using PHPUnit](https://github.com/satooshi/php-coveralls/blob/master/README.md).## License Information
* GNU GPL v3
* You can find a copy of this software here: https://github.com/ronanguilloux/IsoCodes## Contributing Code
The issue queue can be found at: https://github.com/ronanguilloux/IsoCodes/issues.
See [CONTRIBUTING.md](CONTRIBUTING.md).## Special thanks
[Contributors list](https://github.com/ronanguilloux/IsoCodes/graphs/contributors): Many thanks to all!
Many thanks to [JetBrains PhpStorm](http://www.jetbrains.com/phpstorm/) for having sponsored the IsoCode library development from the very beginning! Any contributor having an accepted PR may receive an Open Source License Key for [PhpStorm IDE](http://www.jetbrains.com/phpstorm/download/). Just ping [Ronan via email](mailto:[email protected]) to get one.