PHP で構造化テキスト データを解析し、そのデータを PHP オブジェクト グラフに取得するさまざまな (より良い) 方法を探しています。さまざまなテキストベースのファイル形式用の PHP のさまざまなパーサーを見てきましたが、それらのほとんどすべてが正規表現の壊れやすいチェーンのようです。もっと良い方法があるはずです!
この特定のケースでは、MT940 ファイル (銀行口座トランザクション) を解析しようとしています。しかし、他のファイル形式でも同じ問題に遭遇しました。特にさまざまな形式をサポートする必要がある場合は、常に、維持するのが複雑になる正規表現の大きなチェーンになってしまいます。MT940にもこの問題があります。MT940 は厳密に定義された形式ではなく、ほぼすべての銀行がわずかに異なる方言を使用しています。
では、さまざまな方言を処理するために、より堅牢で拡張可能なパーサーをどのように設計すればよいでしょうか?
この質問から抜粋した MT940 ステートメントの例を次に示します。
{1:F01AHHBCH110XXX0000000000}{2:I940X N2}{3:{108:XBS/091502}}{4:
:20:XBS/091202/0001
:25:5887/507004-50
:28C:140/1
:60F:C0914CHF7789,
:61:0912021202D36,80NTRFNONREF//0887-1202-29-941
04392579-0 LUTHY + xxx, ZUR
:86:6034?60LUTHY + xxxx, ZUR vom 01.12.09 um 16:28 Karten-Nr. 2232
2579-0
:62F:C091202CHF52,2
:64:C091302CHF52,2
-}