EDIFACT stands for Electronic Data Interchange For Administration, Commerce, and Transport
.
This repository contains a parser for any EDIFACT file to extract the values from any segment defined in an EDIFACT formatted file.
Ok, but... What is EDIFACT?
-
Each line of the file consists of a set of data that belongs to a specific segment of a message.
-
A segment is defined by a tag. Following the rest of the data that belongs to that segment. More about segments here.
-
A message is a list of segments. Usually, all segments between the UNH and UNT segments compound a message.
-
A transaction is the list of messages that belongs to a file.
Using composer: composer require chemaclass/edifact-parser
- Clone/Fork the project and
cd
inside the repository docker-compose up
make bash
ordocker exec -ti -u dev edifact_parser_php bash
composer install
php example.php
You can see a full example of usage here.
<?php declare(strict_types=1);
require dirname(__DIR__) . '/vendor/autoload.php';
use EdifactParser\EdifactParser;
$fileContent = <<<EDI
UNA:+.? '
UNB+UNOC:3+9457386:30+73130012:30+19101:118+8+MPM 2.19+1424'
UNH+1+IFTMIN:S:93A:UN:PN001'
TDT+20'
NAD+CZ+0410106314:160:Z12++Company Centre+c/o Carrier AB+City1++12345+DE'
NAD+CN+++Person Name+Street Nr 2+City2++12345+DE'
... etc
UNT+18+1'
UNZ+2+8'
EDI;
/** @psalm-var list<TransactionMessage> $messages */
$messages = EdifactParser::create()->parse($fileContent);