[php-src] Issue #7917: preg_match and preg_match_all both do not set $matches on regex fail, leaving as it was set prior to call

From: Date: Sun, 09 Jan 2022 16:01:38 +0000
Subject: [php-src] Issue #7917: preg_match and preg_match_all both do not set $matches on regex fail, leaving as it was set prior to call
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238914@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/7917 Author: mschroebel ### Description The following code: <?php // preg_match_all.php $matches = [0 => 'Orange', 1 => 'Apple', 2 => 'Banana', 3 => 'Monkey']; $result = preg_match_all('aeiou{0,', 'ou', $matches); var_dump($result); var_dump($matches); $result = preg_match('aeiou{0,', 'ou', $matches); var_dump($result); var_dump($matches); Resulted in this output from command line %php preg_match_all.php: PHP Warning: preg_match_all(): Delimiter must not be alphanumeric or backslash in preg_match_all.php on line 6 PHP Stack trace: PHP 1. {main}() preg_match_all.php:0 PHP 2. preg_match_all($pattern = 'aeiou{0,', $subject = 'ou', $subpatterns = [0 => 'Orange', 1 => 'Apple', 2 => 'Banana', 3 => 'Monkey']) preg_match_all.php:6 preg_match_all.php:7: bool(false) preg_match_all.php:8: array(4) { [0] => string(6) "Orange" [1] => string(5) "Apple" [2] => string(6) "Banana" [3] => string(6) "Monkey" } PHP Warning: preg_match(): Delimiter must not be alphanumeric or backslash in preg_match_all.php on line 10 PHP Stack trace: PHP 1. {main}() preg_match_all.php:0 PHP 2. preg_match($pattern = 'aeiou{0,', $subject = 'ou', $subpatterns = [0 => 'Orange', 1 => 'Apple', 2 => 'Banana', 3 => 'Monkey']) preg_match_all.php:10 preg_match_all.php:11: bool(false) preg_match_all.php:12: array(4) { [0] => string(6) "Orange" [1] => string(5) "Apple" [2] => string(6) "Banana" [3] => string(6) "Monkey" } But I expected this output instead: PHP Warning: preg_match_all(): Delimiter must not be alphanumeric or backslash in preg_match_all.php on line 6 PHP Stack trace: PHP 1. {main}() preg_match_all.php:0 PHP 2. preg_match_all($pattern = 'aeiou{0,', $subject = 'ou', $subpatterns = [0 => 'Orange', 1 => 'Apple', 2 => 'Banana', 3 => 'Monkey']) preg_match_all.php:6 preg_match_all.php:7: bool(false) preg_match_all.php:8: either: null or array[0] PHP Warning: preg_match(): Delimiter must not be alphanumeric or backslash in preg_match_all.php on line 10 PHP Stack trace: PHP 1. {main}() preg_match_all.php:0 PHP 2. preg_match($pattern = 'aeiou{0,', $subject = 'ou', $subpatterns = [0 => 'Orange', 1 => 'Apple', 2 => 'Banana', 3 => 'Monkey']) preg_match_all.php:10 preg_match_all.php:11: bool(false) preg_match_all.php:12: either: null or array[0] ### PHP Version PHP 7.4.27 ### Operating System _No response_

« previous php.bugs (#238914) next »