dbrkls/edifact

PHP 用于 UN/EDIFACT 的工具

dev-master 2020-01-21 02:48 UTC

This package is auto-updated.

Last update: 2024-09-21 20:03:14 UTC


README

处理 UN/EDIFACT 格式 EDI 消息的工具

支持的语法版本是 3。

它以 Composer 包的形式提供

composer require sabas/edifact

映射 XML 文件在单独的存储库中提供 (https://github.com/sabas/edifact-data)。要在存储库中获取它们,请记得使用 --recursive 标志克隆,或使用 git submodule update --init --recursive 下载

EDI/解析器

给定一个 edi 消息,检查语法,输出错误,并以多维数组的形式返回消息。

输入

$c = new Parser($x);

其中 $x 可以是

  • 一个 URL
  • 一个字符串(包裹消息)
  • 字符串数组(每个条目一个段)

$c = new Parser();
$c->load($file);
$c->loadString($string);

输出

错误

$c->errors();

数组

$c->get();

EDI/编码器

给定一个多维数组(格式化为解析器的输出),返回一个 EDI 字符串,可选地每行一个段。

输入

$c = new Encoder($x, $wrap = true);

$x 是一个多维数组,其中第一个维度是 EDI 段,第二个包含元素

  • 单个值
  • 数组(表示复合元素)

$wrap 是一个布尔值,如果您需要每行一个段。设置为 false 禁用包装

$c = new Encoder();
$c->encode($array, $wrap);

输出

$c->get(); // returns String

EDI/分析器

从 EDI 文件创建具有来自 segments.xml 的注释的可读结构化文本。

输入

$analyser = new EDI\Analyser();
$analyser->loadSegmentsXml('edifact/src/EDI/Mapping/d95b/segments.xml');
  • $url 是原始 EDI 消息文件的路径
  • $parsed 是通过 EDI\Parser() 创建的 EDI 消息数组

文本输出

$analyser->process($parsed); // returns text

$analyser->process($parsed, $rawSegments);
  • $rawSegments(可选)是来自 EDI\Parser::getRawSegments 的原始格式段,在分析结果中的每个段之前打印

JSON 输出 获取数组的 json 表示,其中元素名称作为键。

$analyser->process($parsed);
$json = $analyser->getJson();

EDI/读取器

从 EDI 文件读取请求的段元素值。

输入

$r = new Reader($x);
$sender = $r->readEdiDataValue('UNB', 2);
$Dt = $r->readUNBDateTimeOfPpreperation();

其中 X 可以是

  • 一个 URL
  • 一个字符串(包裹消息)
  • 字符串数组(每个条目一个段)

$c = new Parser($x);

$r=new Reader();
$r->setParsedFile($c);
$sender = $r->readEdiDataValue('UNB', 2);
$Dt = $r->readUNBDateTimeOfPpreperation();

输出 错误

$c->errors();

数组

$c->get();

EDI/解释器

使用消息和段的 xml 描述组织由 EDI/解析器解析的数据。

输入

$p=new EDI\Parser($edifile);
$edi = $p->get();

$analyser = new EDI\Analyser();
$segs =$analyser->loadSegmentsXml('vendor/sabas/edifact-data/D95B/segments.xml');

$interpreter = new EDI\Interpreter('vendor/sabas/edifact-data/D95B/messages/codeco.xml', $segs);
$prep = $interpreter->prepare($edi);

输出

Json

$interpreter->getJson()

错误(每个消息)

$interpreter->getErrors()

示例

Edifact

DTM+7:201309200717:203'

数组

['DTM',['7','201309200717','203']]

语法数据

由 David JEAN LOUIS(izi)通过 EDI PEAR 包处理,可从 https://code.google.com/p/izi-sandbox/source/browse/trunk/php/php_edi/ 下载。

注释

有效字符是:A-Za-z0-9.,-()/'+:=?!"%&*;<> UNECE