mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-14 11:27:00 +00:00
bug #3809 Restores the leniency of the matches twig comparison (la5942)
This PR was merged into the 3.x branch.
Discussion
----------
Restores the leniency of the `matches` twig comparison
Restores the leniency of the `matches` twig comparison, allowing null subject to result in a non-match.
Resolves BC break introduced in PR https://github.com/twigphp/Twig/pull/3687 ref in https://github.com/twigphp/Twig/issues/3801#issuecomment-1413345131
As per pattern in https://github.com/twigphp/Twig/pull/3617
Commits
-------
f1366689 Restores the leniency of the `matches` twig comparison, allowing null subject to result in a non-match.
This commit is contained in:
@@ -1021,19 +1021,19 @@ function twig_compare($a, $b)
|
||||
|
||||
/**
|
||||
* @param string $pattern
|
||||
* @param string $subject
|
||||
* @param string|null $subject
|
||||
*
|
||||
* @return int
|
||||
*
|
||||
* @throws RuntimeError When an invalid pattern is used
|
||||
*/
|
||||
function twig_matches(string $regexp, string $str)
|
||||
function twig_matches(string $regexp, ?string $str)
|
||||
{
|
||||
set_error_handler(function ($t, $m) use ($regexp) {
|
||||
throw new RuntimeError(sprintf('Regexp "%s" passed to "matches" is not valid', $regexp).substr($m, 12));
|
||||
});
|
||||
try {
|
||||
return preg_match($regexp, $str);
|
||||
return preg_match($regexp, $str ?? '');
|
||||
} finally {
|
||||
restore_error_handler();
|
||||
}
|
||||
|
||||
@@ -4,9 +4,11 @@ Twig supports the "matches" operator
|
||||
{{ 'foo' matches '/o/' ? 'OK' : 'KO' }}
|
||||
{{ 'foo' matches '/^fo/' ? 'OK' : 'KO' }}
|
||||
{{ 'foo' matches '/O/i' ? 'OK' : 'KO' }}
|
||||
{{ null matches '/o/' }}
|
||||
--DATA--
|
||||
return []
|
||||
--EXPECT--
|
||||
OK
|
||||
OK
|
||||
OK
|
||||
0
|
||||
|
||||
Reference in New Issue
Block a user