PHPackages                             ronanguilloux/isocodes - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. ronanguilloux/isocodes

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

ronanguilloux/isocodes
======================

PHP library - Validators for standards from ISO, International Finance, Public Administrations, GS1, Book and Music Industries, Phone numbers &amp; Zipcodes for many countries

2.4.1(4mo ago)8013.3M↓18.2%81[1 issues](https://github.com/ronanguilloux/IsoCodes/issues)[1 PRs](https://github.com/ronanguilloux/IsoCodes/pulls)20GPL-3.0-or-laterPHPPHP &gt;=8.2CI passing

Since May 2Pushed 1mo ago18 watchersCompare

[ Source](https://github.com/ronanguilloux/IsoCodes)[ Packagist](https://packagist.org/packages/ronanguilloux/isocodes)[ Docs](https://github.com/ronanguilloux/IsoCodes)[ RSS](/packages/ronanguilloux-isocodes/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (8)Versions (53)Used By (20)

IsoCodes
========

[](#isocodes)

PHP library - Validators for standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers &amp; Zipcodes for many countries

Usage
-----

[](#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)

// Is this the unique digital fingerprint for for "Instant Crush" by Daft Punk?
$isISRC = Isrc::validate('US-QX9-13-00105');

// Is this jazz band covering Daft Punk's "Around the World"?
$isISWC = Iswc::validate('T-003.958.832-6');

// Checking your iPhone device is valid?
$isDevice = Imei::validate('352066060926230');

// Selling your Honda Civic?
$isVin = VinNA::validate('1HGBH41JXMN109186');

// Sending packages via DHL?
$isIdentcode = Identcode::validate('563102430313');
$isLeitcode = Leitcode::validate('23669012012305');
```

ISO Codes Validations available:
--------------------------------

[](#iso-codes-validations-available)

### International Finance

[](#international-finance)

- IBAN (requires `bcmath` PHP extension)
- SWIFT/BIC
- BBAN (RIB, requires `bcmath` PHP extension)
- Credit Card number
- SEDOL (Stock Exchange codes)

### Manufacturing Industries

[](#manufacturing-industries)

- ISBN - International Standard Book Number, both 10 &amp; 13 digits
- ISMN - International Standard Music Number
- ISSN - International Standard Serial Number
- IMO - International Maritime Organization (Ship Identification Number)
- ISWC - International Standard Musical Work Code
- IMEI - International Mobile Equipment Identity
- VIN - Vehicle Identification Number – ISO 3779 &amp; ISO 4030

### Public Administrations

[](#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) &amp; 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

[](#gs1-specific-numbersidentifiers)

- 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

### Logistics &amp; Post

[](#logistics--post)

- Identcode (Deutsche Post DHL)
- Leitcode (Deutsche Post DHL)

### Miscellaneous

[](#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](http://php.net/supported-versions.php) by the PHP project.

Build status
------------

[](#build-status)

[![Software License](https://camo.githubusercontent.com/2fed5eb8f392e7c631cb913309b45c312c917c949db61422fb8b8204295f0d47/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d627269676874677265656e2e737667)](LICENSE.md)[![Continuous Integration](https://github.com/ronanguilloux/IsoCodes/actions/workflows/php.yml/badge.svg)](https://github.com/ronanguilloux/IsoCodes/actions/workflows/php.yml)[![Latest Stable Version](https://camo.githubusercontent.com/f04513fe76d8eba7226800065786f4550704b279838a94b0d5e6668ca818d173/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f726f6e616e6775696c6c6f75782f69736f636f6465732e737667)](https://packagist.org/packages/ronanguilloux/isocodes)[![Coverage Status](https://camo.githubusercontent.com/4c47fd7da2a54a79a8ada080c68620e8c67531375df728aab77afbed6a3c1f17/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f726f6e616e6775696c6c6f75782f49736f436f6465732f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/r/ronanguilloux/IsoCodes?branch=master)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/1e06b285f7ac874e6d9aecfc305a58061dc1f1f874dfe81700914923f7edaba0/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f726f6e616e6775696c6c6f75782f49736f436f6465732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/ronanguilloux/IsoCodes/?branch=master)
[![Total Downloads](https://camo.githubusercontent.com/6eae12ea2d2b394b55178d0003932f07dde0b2048277a0bd22e7ebe2cfbcb88f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f726f6e616e6775696c6c6f75782f69736f636f6465732e737667)](https://packagist.org/packages/ronanguilloux/isocodes)[![Monthly Downloads](https://camo.githubusercontent.com/4bd4e4879eb815602e5e7990244448088f2bf41d4874d059188dd31e25457427/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f726f6e616e6775696c6c6f75782f69736f636f646573)](https://packagist.org/packages/ronanguilloux/isocodes)[![Daily Downloads](https://camo.githubusercontent.com/c5953be148a18c6258b73d48e888394101df5cdf7137b93583cdf55a553fd147/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64642f726f6e616e6775696c6c6f75782f69736f636f646573)](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
------------------------------------------------------

[](#bcmath-as-an-optional-extension-for-certain-validators)

For IBAN &amp; 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
----------

[](#installing)

### Via GitHub

[](#via-github)

```
$ git clone git@github.com:ronanguilloux/IsoCodes.git
$ make # requires composer
```

Autoloading is PSR-0 friendly.

### Via [Packagist](https://packagist.org/packages/ronanguilloux/isocodes) &amp; [Composer](https://getcomposer.org/doc/00-intro.md)

[](#via-packagist--composer)

Require the latest version of `ronanguilloux/isocodes` with Composer

```
$ composer require ronanguilloux/isocodes
```

Wrappers
--------

[](#wrappers)

### With Symfony Validator

[](#with-symfony-validator)

Install [Soullivaneuh/IsoCodesValidator](https://github.com/Soullivaneuh/IsoCodesValidator)to get IsoCodes working as Validator for **Symfony** and **Silex**.

### With CakePHP 3

[](#with-cakephp-3)

Install [gourmet/validation](https://github.com/gourmet/validation)to get IsoCodes working with **CakePHP 3** as a validator.

### With Laravel

[](#with-laravel)

Install [pixelpeter/laravel5-isocodes-validation](https://github.com/pixelpeter/laravel5-isocodes-validation)to get IsoCodes working with **Laravel 5** as a validator. Install [pixelpeter/laravel-isocodes-validation](https://github.com/pixelpeter/laravel-isocodes-validation)to get IsoCodes working with **Laravel 10+** as a validator.

Supported PHP versions
----------------------

[](#supported-php-versions)

- till tags 2.3.9: PHP 7.\*
- from tags 2.4.0: PHP 8.\*

Unit testing
------------

[](#unit-testing)

```
$ make tests
```

Make utilities
--------------

[](#make-utilities)

For development &amp; contribution purpose only, a Makefile provides various tools to check your code style, quality &amp; 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
------------------------

[](#quality-assurance-report)

Isocodes quality plan is mainly based on phpunit: it runs 980+ unit tests, with separated valid &amp; 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:

- [pdepend](https://github.com/pdepend/pdepend)
- [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)

Just run:

```
$ 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
-------------------

[](#license-information)

- GNU GPL v3
- You can find a copy of this software here:

Contributing Code
-----------------

[](#contributing-code)

The issue queue can be found at: . See [CONTRIBUTING.md](CONTRIBUTING.md).

Special thanks
--------------

[](#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:ronan.guilloux@gmail.com) to get one.

###  Health Score

73

—

ExcellentBetter than 100% of packages

Maintenance83

Actively maintained with recent releases

Popularity65

Solid adoption and visibility

Community42

Growing community involvement

Maturity89

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 82.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~122 days

Recently: every ~262 days

Total

33

Last Release

127d ago

Major Versions

1.2.0 → 2.0.02015-12-27

PHP version history (7 changes)1.0.0PHP &gt;=5.3.0

1.1.4PHP &gt;=5.4.0

2.0.0PHP &gt;=5.6.0

2.1.1PHP ^5.6 || ^7.0

2.2.0PHP ^7

2.3.2PHP ^7.3|^8.0

2.4.0PHP &gt;=8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/a8816c41e8b296bca1195c01a013e277fb2b4739f4354f6be1a33582898574d7?d=identicon)[Ronan](/maintainers/Ronan)

---

Top Contributors

[![ronanguilloux](https://avatars.githubusercontent.com/u/313677?v=4)](https://github.com/ronanguilloux "ronanguilloux (454 commits)")[![soullivaneuh](https://avatars.githubusercontent.com/u/1698357?v=4)](https://github.com/soullivaneuh "soullivaneuh (31 commits)")[![google-labs-jules[bot]](https://avatars.githubusercontent.com/in/842251?v=4)](https://github.com/google-labs-jules[bot] "google-labs-jules[bot] (18 commits)")[![barryvdh](https://avatars.githubusercontent.com/u/973269?v=4)](https://github.com/barryvdh "barryvdh (8 commits)")[![pp3345](https://avatars.githubusercontent.com/u/1225211?v=4)](https://github.com/pp3345 "pp3345 (3 commits)")[![Geolim4](https://avatars.githubusercontent.com/u/1332071?v=4)](https://github.com/Geolim4 "Geolim4 (3 commits)")[![ArtemGoutsoul](https://avatars.githubusercontent.com/u/1379350?v=4)](https://github.com/ArtemGoutsoul "ArtemGoutsoul (3 commits)")[![stof](https://avatars.githubusercontent.com/u/439401?v=4)](https://github.com/stof "stof (2 commits)")[![enumag](https://avatars.githubusercontent.com/u/539462?v=4)](https://github.com/enumag "enumag (2 commits)")[![g3rd0](https://avatars.githubusercontent.com/u/31999180?v=4)](https://github.com/g3rd0 "g3rd0 (2 commits)")[![iLubenets](https://avatars.githubusercontent.com/u/1554189?v=4)](https://github.com/iLubenets "iLubenets (2 commits)")[![JulienBreux](https://avatars.githubusercontent.com/u/964330?v=4)](https://github.com/JulienBreux "JulienBreux (2 commits)")[![kassnl](https://avatars.githubusercontent.com/u/4729259?v=4)](https://github.com/kassnl "kassnl (2 commits)")[![kitbs](https://avatars.githubusercontent.com/u/4569320?v=4)](https://github.com/kitbs "kitbs (2 commits)")[![kookynerd](https://avatars.githubusercontent.com/u/6597737?v=4)](https://github.com/kookynerd "kookynerd (2 commits)")[![pvankouteren](https://avatars.githubusercontent.com/u/1055598?v=4)](https://github.com/pvankouteren "pvankouteren (2 commits)")[![Seldaek](https://avatars.githubusercontent.com/u/183678?v=4)](https://github.com/Seldaek "Seldaek (1 commits)")[![drieschel](https://avatars.githubusercontent.com/u/852291?v=4)](https://github.com/drieschel "drieschel (1 commits)")[![kukulich](https://avatars.githubusercontent.com/u/260445?v=4)](https://github.com/kukulich "kukulich (1 commits)")[![loicfavory](https://avatars.githubusercontent.com/u/5370815?v=4)](https://github.com/loicfavory "loicfavory (1 commits)")

---

Tags

administrationsgs1gtininternational-financeisocodesphpvalidatorisostandardEAN13financezipcodevatgtinswiftSsnSirenphone-numberIBANBICISBNISINUPC-AbookBBANRIBCredit Card numberINSEENSSSiretCIFNIFNINOgs1ssccglnSEDOLUCC-13DUN-14ITFGS-1GRAIGDTIGSRNDUNPublic AdministrationsUDIISMNISWCHETU

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/ronanguilloux-isocodes/health.svg)

```
[![Health](https://phpackages.com/badges/ronanguilloux-isocodes/health.svg)](https://phpackages.com/packages/ronanguilloux-isocodes)
```

###  Alternatives

[intervention/validation

Additional validation rules for the Laravel framework

6826.7M8](/packages/intervention-validation)[biblys/isbn

A PHP library to convert and validate ISBNs

56346.8k1](/packages/biblys-isbn)[barbieswimcrew/zip-code-validator

Constraint class for international zipcode validation

772.3M](/packages/barbieswimcrew-zip-code-validator)[ph-7/eu-vat-validator

A simple and clean PHP class that validates EU VAT numbers against the central ec.europa.eu database (using the official europa API).

95464.2k1](/packages/ph-7-eu-vat-validator)[mvdnbrk/gtin

GTIN / EAN / UPC Validation for Laravel

3148.6k1](/packages/mvdnbrk-gtin)[abcaeffchen/sepa-utilities

SepaUtilities provides useful methods for validating and sanitizing inputs used in SEPA files supporting PHP &gt;= 8.1.

312.0M2](/packages/abcaeffchen-sepa-utilities)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
