Skip to content

Commit

Permalink
Merge branch '6.0' into 6.1
Browse files Browse the repository at this point in the history
* 6.0:
  [Security][Validator] Update Hebrew translations
  [Finder] Add support of no-capture regex modifier in MultiplePcreFilterIterator (available from PHP 8.2)
  • Loading branch information
fabpot committed Apr 15, 2022
2 parents f2cf600 + af7edab commit 45b8beb
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 19 deletions.
8 changes: 7 additions & 1 deletion Iterator/MultiplePcreFilterIterator.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,13 @@ protected function isAccepted(string $string): bool
*/
protected function isRegex(string $str): bool
{
if (preg_match('/^(.{3,}?)[imsxuADU]*$/', $str, $m)) {
$availableModifiers = 'imsxuADU';

if (\PHP_VERSION_ID >= 80200) {
$availableModifiers .= 'n';
}

if (preg_match('/^(.{3,}?)['.$availableModifiers.']*$/', $str, $m)) {
$start = substr($m[1], 0, 1);
$end = substr($m[1], -1);

Expand Down
38 changes: 20 additions & 18 deletions Tests/Iterator/MultiplePcreFilterIteratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,26 @@ public function testIsRegex($string, $isRegex, $message)

public function getIsRegexFixtures()
{
return [
['foo', false, 'string'],
[' foo ', false, '" " is not a valid delimiter'],
['\\foo\\', false, '"\\" is not a valid delimiter'],
['afooa', false, '"a" is not a valid delimiter'],
['//', false, 'the pattern should contain at least 1 character'],
['/a/', true, 'valid regex'],
['/foo/', true, 'valid regex'],
['/foo/i', true, 'valid regex with a single modifier'],
['/foo/imsxu', true, 'valid regex with multiple modifiers'],
['#foo#', true, '"#" is a valid delimiter'],
['{foo}', true, '"{,}" is a valid delimiter pair'],
['[foo]', true, '"[,]" is a valid delimiter pair'],
['(foo)', true, '"(,)" is a valid delimiter pair'],
['<foo>', true, '"<,>" is a valid delimiter pair'],
['*foo.*', false, '"*" is not considered as a valid delimiter'],
['?foo.?', false, '"?" is not considered as a valid delimiter'],
];
yield ['foo', false, 'string'];
yield [' foo ', false, '" " is not a valid delimiter'];
yield ['\\foo\\', false, '"\\" is not a valid delimiter'];
yield ['afooa', false, '"a" is not a valid delimiter'];
yield ['//', false, 'the pattern should contain at least 1 character'];
yield ['/a/', true, 'valid regex'];
yield ['/foo/', true, 'valid regex'];
yield ['/foo/i', true, 'valid regex with a single modifier'];
yield ['/foo/imsxu', true, 'valid regex with multiple modifiers'];
yield ['#foo#', true, '"#" is a valid delimiter'];
yield ['{foo}', true, '"{,}" is a valid delimiter pair'];
yield ['[foo]', true, '"[,]" is a valid delimiter pair'];
yield ['(foo)', true, '"(,)" is a valid delimiter pair'];
yield ['<foo>', true, '"<,>" is a valid delimiter pair'];
yield ['*foo.*', false, '"*" is not considered as a valid delimiter'];
yield ['?foo.?', false, '"?" is not considered as a valid delimiter'];

if (\PHP_VERSION_ID >= 80200) {
yield ['/foo/n', true, 'valid regex with the no-capture modifier'];
}
}
}

Expand Down

0 comments on commit 45b8beb

Please sign in to comment.