chemaclass/edifact-parser

An EDIFACT file parser to extract the values from any defined segment

5.0.0 2023-02-10 12:18 UTC

This package is auto-updated.

Last update: 2024-07-18 16:14:36 UTC


README

Scrutinizer Code Quality Type Coverage CI Minimum PHP Version

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?

Format of an EDIFACT file

  • 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.

Installation

composer require chemaclass/edifact-parser

Contribute

You are more than welcome to contribute reporting issues, sharing ideas, or contributing with your Pull Requests.

Basic examples

You can see a full example of printing segments.

You can see a full example of extracting data.

<?php declare(strict_types=1);

use EdifactParser\EdifactParser;
use EdifactParser\Segments\NADNameAddress;

require dirname(__DIR__) . '/vendor/autoload.php';

$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'
UNT+18+1'

UNZ+2+8'
EDI;

$parserResult = EdifactParser::createWithDefaultSegments()->parse($fileContent);
$firstMessage = $parserResult->transactionMessages()[0];

$cnNadSegment = $firstMessage->segmentByTagAndSubId('NAD', 'CN');
$personName = $cnNadSegment->rawValues()[4];

var_dump($personName); // 'Person Name'