读EDI格式的文件

我是新来的EDI,我有一个问题。

我已阅读,你可以通过查看ISA行的最后3个字符得到绝大多数你需要有关电子数据交换格式。 这是好的,如果每一个EDI用来换行分隔的实体,但我发现,很多人都与任意数量的用作休息的字符单行文件。 我注意到,在每一个EDI我解析的最后一个字符是间隔字符。 我已经看了几百,并没有发现任何例外。 如果我第一个抢字,并用它来获得最后3的ISA行,我应该有理由期待,我将能够从一个EDI分析数据?

我不知道这是否会有所帮助,但EDI'类型'的问题往往是850,875,我不知道这是一个标准或没有,但它可能是值得一提。

--------------解决方案-------------

EDI的交易类型并不重要(850 =秩序,875 =杂货店PO)。 写过几EDI解析器,这里有一些事情我已经发现:

你应该能够依靠的ISA(和ISA只)为固定宽度(如果没有记错105个字符)。 去掉第一个105个字符。 之后和“GS”第一次出现之前,一切都是你的行终止(这可以是任何东西,包括0×07 - 哔 - 所以看出来,如果​​你输出到标准输出的调试或者你可能有一大堆的哔哔声的到来出了扬声器的)。 通常这是1或2个字符,有时也可以是多(如果你发送的数据的人增加了一个额外的终结出于某种原因)。 一旦你有行结束符,即可获得该段(场)分隔符。 我常拉GS线的3个字符,并使用,虽然ISA行的第4个字符应正常工作。

也知道,你可以用多个ISA在其中的一个文件。 在这种情况下,你不能指望线路或字段分隔符为每个ISA中一样。

另一件事..它也有可能(再一次,不知道它的规范)为电子数据交换文件,具有可变长度ISA。 这是非常罕见的,但我不得不适应它。 如果出现这种情况,你必须行解析到它的领域。 在ISA最后一个字段只有一个字符长的,这样你就可以从中确定ISA的实际长度。 如果是我,我不会担心这一点,除非你看到喜欢的文件。 这是一种罕见的次数。

我上面已经说过可能不会对“规范”的信......也就是说,我不知道它的法律有不同的行分隔符在同一个文件,但在不同的国际审计准则,但它在技术上是可行我适应它,因为我必须处理,在这种方式来通过的文件。 在EDI处理我用5000以上处理文件时,每天有超过3000可能的数据源(所以我看到很多奇怪的东西)。

最好的问候,唐

EDI的内容是由段和元素。

分析它,你将需要分割成段,然后再像这样元素(PHP):

<?php

$edi = "YOUR EDIT STRING!";
$segment_delimeter = "~";
$element_delimeter = "*";

//First break it into segments
$segments = explode($segment_delimiter, $edi);

//Now break each segment into elements
$segs_and_elems = array();
foreach($segments as $segment){
$segs_and_elems[] = explode(element_delimeter, $segment);
}

//To echo out what type of EDI this is for example:
foreach($segs_and_elems as $seg){
if($seg[0] == "GS"){ echo($seg[1]); }
}

?>

希望这有助于让你开始。

分类:解析 时间:2013-01-17 人气:4
本文关键词: 分析,EDI,X12
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.652 (s). 10 q(s)