Basic GS1-128 (EAN128) decoder in PHP.
composer require nextgen-tech/gs1-decoder
# run PHPUnit tests
vendor/bin/phpunit
# run PHPStan analyse
vendor/bin/phpstan analyse
To run all tests automatically on several platforms you can use act, which mimics GitHub Actions locally:
$ act -P ubuntu-latest=shivammathur/node:latest
use NGT\Barcode\GS1Decoder\Decoder;
$decoder = new Decoder($delimiter = '[FNC1]');
$barcode = $decoder->decode('0195012345678903422616[FNC1]3103000123');
print_r($barcode->toArray());
Array
(
[value] => 0195012345678903422616[FNC1]3103000123
[delimiter] => [FNC1]
[identifiers] => Array
(
[01] => Array
(
[code] => 01
[title] => GTIN
[name] => Global Trade Item Number
[length] => 14
[content] => 95012345678903
[raw_content] => 95012345678903
)
[422] => Array
(
[code] => 422
[title] => ORIGIN
[name] => Country of origin of a trade item
[length] => 3
[content] => 616
[raw_content] => 616
)
[310] => Array
(
[code] => 310
[title] => NET WEIGHT (kg)
[name] => Net weight, kilograms
[length] => 6
[content] => 0.123
[raw_content] => 000123
[decimals] => 3
)
)
)
Identifier | Title | Description |
---|---|---|
00 | SSCC | Serial Shipping Container Code |
01 | GTIN | Global Trade Item Number (GTIN) |
02 | CONTENT | GTIN of contained trade items |
10 | BATCH/LOT | Batch or lot number |
11 | PROD DATE | Production date |
12 | DUE DATE | Due date |
13 | PACK DATE | Packaging date |
15 | BEST BEFORE | Best before date |
16 | SELL BY | Sell by date |
17 | USE BY | Expiration date |
20 | VARIANT | Internal product variant |
21 | SERIAL | Serial number |
37 | COUNT | Count of trade items or trade item pieces contained in a logistic unit |
91 | INTERNAL | Company internal information |
422 | ORIGIN | Country of origin of a trade item |
3100-3105 | NET WEIGHT (kg) | Net weight, kilograms |
3920-3929 | PRICE | Applicable amount payable, single monetary area (variable measure trade item) |
8005 | PRICE PER UNIT | Price per unit of measure |
8008 | PROD TIME | Date and time of production |
The list of all GS1 Application Identifiers can be found here