Bug #73948 [Ana->Asn]: Preg_match_all should return NULLs on trailing optional capture groups.

From: Date: Tue, 19 Mar 2019 13:04:46 +0000
Subject: Bug #73948 [Ana->Asn]: Preg_match_all should return NULLs on trailing optional capture groups.
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-220072@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73948&edit=1

 ID:                 73948
 Updated by:         nikic@php.net
 Reported by:        tomasyorke at hotmail dot com
 Summary:            Preg_match_all should return NULLs on trailing
                     optional capture groups.
-Status:             Analyzed
+Status:             Assigned
 Type:               Bug
 Package:            PCRE related
 Operating System:   Windows 7
 PHP Version:        7.0.14
-Assigned To:        
+Assigned To:        nikic
 Block user comment: N
 Private report:     N

 New Comment:

PR for PHP 7.4: https://github.com/php/php-src/pull/3964


Previous Comments:
------------------------------------------------------------------------
[2018-06-09 22:51:16] php at tecnopolis dot ca

For those stuck on older PHP's, I'm wondering if the following is sufficient to work
around this bug?

$pattern.='(.??)';
preg_match($pattern,$haystack,$matches);
array_pop($matches);

I can't yet find any instance where the fairly innocuous (.??) could possibly cause a problem,
it should match in all cases, when there's chars left or not, and being non-greedy will not eat
earlier matches' chars.

------------------------------------------------------------------------
[2018-04-14 15:08:34] nikic@php.net

@requinix: That's impossible for BC reasons. I agree with @cmb that this should only be done
for PREG_UNMATCHED_AS_NULL.

------------------------------------------------------------------------
[2018-04-14 14:47:18] requinix@php.net

The filling should happen with or without PREG_UNMATCHED_AS_NULL. What it should control whether the
filler is NULLs or empty strings.

------------------------------------------------------------------------
[2018-04-14 14:42:46] cmb@php.net

Since we now have PREG_UNMATCHED_AS_NULL, the solution appears to
be straight forward: fill up NULL values at the end, only if
PREG_UNMATCHED_AS_NULL is used.  Since this option is only
available as of PHP 7.2.0, the resulting BC break seems to be
acceptable.

------------------------------------------------------------------------
[2018-04-14 14:39:07] cmb@php.net

Related To: Bug #76221

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=73948


--
Edit this bug report at https://bugs.php.net/bug.php?id=73948&edit=1


Thread (19 messages)

« previous php.bugs (#220072) next »