preg_match and preg_match_all both do not set $matches on regex fail, leaving as it was set prior to call
Aperta
Nessuno ha ancora preso questa issue.
Extension: pcre
Feature
Status: Verified
- Lingua principale
- C
- Stelle
- 40.4k
- Fork
- 8.1k
- Merge medio
- 2g 13h
- PR unite (30g)
- 96
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci le chiamate fornite a preg_match() e preg_match_all() con il pattern non valido su PHP 7.4.27, quindi traccia le due API nell’interprete PHP. L’attività è completata quando una corrispondenza fallita non lascia più invariato il contenuto precedente di $matches del chiamante, con una copertura di regressione per entrambe le funzioni.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- php
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100