|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2007-11-23 01:32 UTC] felipe@php.net
[2008-01-13 15:05 UTC] nlopess@php.net
[2008-01-16 17:37 UTC] ch+php at 1111-internet dot com
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 11:00:01 2025 UTC |
Description: ------------ The code and results attached show two examples of preg_* demonstrating how an optional parenthesis match at the end of a regular expression is not being captured if the optional condition is not matched. I think this is a bug, because if the optional parenthesis is not the last one in the regex, the empty value IS captured - which suggests that it should not be omitted just because it happens to be the last one. Reproduce code: --------------- preg_match_all("/(1)(23)?/", "12314123", $match, PREG_SET_ORDER); print_r($match); print_r(preg_split("/(1)(23)?/", "12314123", -1, PREG_SPLIT_DELIM_CAPTURE)); Expected result: ---------------- Array ( [0] => Array ( [0] => 123 [1] => 1 [2] => 23 ) [1] => Array ( [0] => 1 [1] => 1 [2] => ) [2] => Array ( [0] => 123 [1] => 1 [2] => 23 ) ) Array ( [0] => [1] => 1 [2] => 23 [3] => [4] => 1 [5] => [6] => 4 [7] => 1 [8] => 23 [9] => ) Actual result: -------------- Array ( [0] => Array ( [0] => 123 [1] => 1 [2] => 23 ) [1] => Array ( [0] => 1 [1] => 1 ) [2] => Array ( [0] => 123 [1] => 1 [2] => 23 ) ) Array ( [0] => [1] => 1 [2] => 23 [3] => [4] => 1 [5] => 4 [6] => 1 [7] => 23 [8] => )