Description
PHP library - Validators for standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries
ISO-codes alternatives and similar libraries
Based on the "Filtering and Validation" category.
Alternatively, view ISO-codes alternatives based on common mentions on social networks and blogs.
-
Respect Validation
The most awesome validation engine ever created for PHP -
Valitron
Valitron is a simple, elegant, stand-alone validation library with NO dependencies -
PHP validate
Lightweight and feature-rich PHP validation and filtering library. Support scene grouping, pre-filtering, array checking, custom validators, custom messages. 轻量且功能丰富的PHP验证、过滤库。支持场景分组,前置过滤,数组检查,自定义验证器,自定义消息。 -
Linio Input
Abstracts HTTP request input handling, providing an easy interface for data hydration and validation -
Cake Validation
[READ-ONLY] Validation library from CakePHP. This repo is a split of the main code that can be found in https://github.com/cakephp/cakephp -
DMS Filter
Library that offers Input Filtering based on Annotations for use with Objects. Check out 2.dev for 2.0 pre-release. -
Distributed locks with Redis and ReactPHP
:lock: Asynchronous distributed locks with Redis and ReactPHP -
yii2-array-structure-validator
Validate complex array structure
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ISO-codes or a related project?
README
IsoCodes
PHP library - Validators for standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries
Usage
// 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 world
Each 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 by the PHP project.
Build status
Continously inspecting results (phpdoc, phpmd, phpcc, etc.) available on Scrutinizer CI
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
$ git clone [email protected]:ronanguilloux/IsoCodes.git
Autoloading is PSR-0 friendly.
Via Packagist & Composer
Require the latest version of ronanguilloux/isocodes
with Composer
$ composer require ronanguilloux/isocodes
Wrappers
With Symfony Validator
Install Soullivaneuh/IsoCodesValidator to get IsoCodes working as Validator for Symfony and Silex.
With CakePHP 3
Install gourmet/validation to get IsoCodes working with CakePHP 3 as a validator.
With Laravel
Install pixelpeter/laravel5-isocodes-validation to get IsoCodes working with Laravel 5 as a validator.
Supported PHP versions
- 7.3
- 7.4
Unit testing
$ 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-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
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 libraries:
Just run:
$ make stats -i
XML report outputs are then generated in a new ./build
folder
Code covering report built using Coveralls.io. How-to generate such code coverage report using PHPUnit.
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: Many thanks to all!
Many thanks to JetBrains 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. Just ping Ronan via email to get one.
*Note that all licence references and agreements mentioned in the ISO-codes README section above
are relevant to that project's source code only.