Bug #80276 [Opn]: (PATTERN_ORDER) Dupl named groups (?J) prefer last alternative even not matched
Edit report at https://bugs.php.net/bug.php?id=80276&edit=1
ID: 80276
User updated by: vicreal at yandex dot ru
Reported by: vicreal at yandex dot ru
Summary: (PATTERN_ORDER) Dupl named groups (?J) prefer last
alternative even not matched
Status: Open
Type: Bug
Package: PCRE related
Operating System: Debian 10 x64 (4.19.132-1)
PHP Version: 7.4.11
Block user comment: N
Private report: N
New Comment:
Another example:
preg_match_all('/(?J)<(?<CHAR>\d+)>|<(?<CHAR>\w+)>/u', '1
<01> 2 <PP> 3', $matches, PREG_PATTERN_ORDER);
Actual result:
--------------
Array
(
[0] => Array
(
[0] => "<01>"
[1] => "<PP>"
)
[CHAR] => Array
(
[0] => "" // must be "01"
[1] => "PP"
)
[1] => Array
(
[0] => "01"
[1] => ""
)
[2] => Array
(
[0] => ""
[1] => "PP"
)
)
Сhecked in version 7.4.10
Previous Comments:
------------------------------------------------------------------------
[2020-10-23 14:25:58] vicreal at yandex dot ru
Description:
------------
Affect named capture groups when duplicate names are enabled (?J) In 7.4.10 named capture group
always returns the content captured in last alternative, no matter which of the alternatives
matched.
In 7.4 this issue
https://bugs.php.net/bug.php?id=79257
was fixed only for PREG_SET_ORDER mode, but in PREG_PATTERN_ORDER mode this bug still has a place.
Сhecked in version 7.4.10
Test script:
---------------
preg_match_all('/(?J)(?:(?<g>foo)|(?<g>bar))(?<h>baz)/',
'foobaz', $matches, PREG_PATTERN_ORDER);
var_dump($matches);
Expected result:
----------------
Array
(
[0] => Array
(
[0] => "foobaz"
)
[g] => Array
(
[0] => "foo"
)
[1] => Array
(
[0] => "foo"
)
[2] => Array
(
[0] => ""
)
[h] => Array
(
[0] => "baz"
)
[3] => Array
(
[0] => "baz"
)
)
Actual result:
--------------
Array
(
[0] => Array
(
[0] => "foobaz"
)
[g] => Array
(
[0] => ""
)
[1] => Array
(
[0] => "foo"
)
[2] => Array
(
[0] => ""
)
[h] => Array
(
[0] => "baz"
)
[3] => Array
(
[0] => "baz"
)
)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=80276&edit=1
Thread (3 messages)