Skip to content

Commit

Permalink
Merge pull request #146 from tomek12311/fix/question-marks-are-not-pa…
Browse files Browse the repository at this point in the history
…rsed-correctly

FIX: Question marks are not parsed correctly
sabas authored Jan 8, 2025

Verified

This commit was signed with the committer’s verified signature.
d3adb5 d3adb5
2 parents 385dd28 + 55eb38a commit d59afa4
Showing 2 changed files with 6 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/EDI/Parser.php
Original file line number Diff line number Diff line change
@@ -522,10 +522,10 @@ private function unwrap(string &$string): array
$this->errors[] = 'This file contains some segments without terminators';
}

$terminatorRegex = '/(([^'.$this->symbRel.']'.$this->symbRel.'{2})+|[^'.$this->symbRel.'])'.$this->symbEnd.'|[\r\n]+/';
$terminatorRegex = '/((?<!'.$this->symbRel.')(?:'.$this->symbRel.$this->symbRel.')*)'.$this->symbEnd.'|[\r\n]+/';

if ($this->strict) {
$terminatorRegex = '/(([^'.$this->symbRel.']'.$this->symbRel.'{2})+|[^'.$this->symbRel.'])'.$this->symbEnd.'/';
$terminatorRegex = '/((?<!'.$this->symbRel.')(?:'.$this->symbRel.$this->symbRel.')*)'.$this->symbEnd.'/';
}

$string = (string) \preg_replace(
6 changes: 4 additions & 2 deletions tests/EDITest/ParserTest.php
Original file line number Diff line number Diff line change
@@ -90,8 +90,10 @@ public static function multipleEscapedSegmentsProvider(): array
["EQD+CX??????DU12?+3456+2?:0'", [['EQD', 'CX???DU12+3456', '2:0']]],
["EQD+CX????????DU12?+3456+2?:0'", [['EQD', 'CX????DU12+3456', '2:0']]],
["EQD+CX??DU12?+3456+2?:0??'", [['EQD', 'CX?DU12+3456', '2:0?']]],
["EQD+CX??DU12?+3456+2?:0????'", [['EQD', 'CX?DU12+3456', "2:0??'"]]], // TODO? -> ' is correct here?
["EQD+CX??DU12?+3456+2?:0??????'", [['EQD', 'CX?DU12+3456', "2:0???'"]]], // TODO? -> ' is correct here?
["EQD+CX??DU12?+3456+2?:0???'", [['EQD', 'CX?DU12+3456', "2:0?'"]]],
["EQD+CX??DU12?+3456+2?:0????'", [['EQD', 'CX?DU12+3456', "2:0??"]]],
["EQD+CX??DU12?+3456+2?:0??????'", [['EQD', 'CX?DU12+3456', "2:0???"]]],
["EQD+CX??DU12?+3456+2?:0???????'", [['EQD', 'CX?DU12+3456', "2:0???'"]]],
["??EQD+CX??DU12?+3456+2?:0'", [['?EQD', 'CX?DU12+3456', '2:0']]],
["????EQD+CX??DU12?+3456+2?:0'", [['??EQD', 'CX?DU12+3456', '2:0']]],
["??????EQD+CX??DU12?+3456+2?:0'", [['???EQD', 'CX?DU12+3456', '2:0']]],

0 comments on commit d59afa4

Please sign in to comment.