[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: | mschroebel | 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_