From 4d09fe6e0464e278391d71d80a47c1f98ea3d4d6 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Mon, 2 Jul 2012 08:56:52 +0200 Subject: [PATCH] [Finder] '*' and '?' are considered are glob pattern rather than delimiters (fix #4664) --- src/Symfony/Component/Finder/CHANGELOG.md | 2 ++ .../Component/Finder/Iterator/MultiplePcreFilterIterator.php | 2 +- .../Finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Finder/CHANGELOG.md b/src/Symfony/Component/Finder/CHANGELOG.md index 31d12a97f6..b47b26a1b3 100644 --- a/src/Symfony/Component/Finder/CHANGELOG.md +++ b/src/Symfony/Component/Finder/CHANGELOG.md @@ -12,3 +12,5 @@ CHANGELOG * added searching based on the file content via Finder::contains() and Finder::notContains() * added support for the != operator in the Comparator + * [BC BREAK] filter expressions (used for file name and content) are no more + considered as regexps but glob patterns when they are enclosed in '*' or '?' diff --git a/src/Symfony/Component/Finder/Iterator/MultiplePcreFilterIterator.php b/src/Symfony/Component/Finder/Iterator/MultiplePcreFilterIterator.php index 8ba0fe3ff8..e5d1135201 100644 --- a/src/Symfony/Component/Finder/Iterator/MultiplePcreFilterIterator.php +++ b/src/Symfony/Component/Finder/Iterator/MultiplePcreFilterIterator.php @@ -58,7 +58,7 @@ abstract class MultiplePcreFilterIterator extends \FilterIterator $end = substr($m[1], -1); if ($start === $end) { - return !preg_match('/[[:alnum:] \\\\]/', $start); + return !preg_match('/[*?[:alnum:] \\\\]/', $start); } if ($start === '{' && $end === '}') { diff --git a/src/Symfony/Component/Finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php b/src/Symfony/Component/Finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php index 74414465ce..89d8edb009 100644 --- a/src/Symfony/Component/Finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php +++ b/src/Symfony/Component/Finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php @@ -38,6 +38,8 @@ class MultiplePcreFilterIteratorTest extends \PHPUnit_Framework_TestCase array('/foo/imsxu', true, 'valid regex with multiple modifiers'), array('#foo#', true, '"#" is a valid delimiter'), array('{foo}', true, '"{,}" is a valid delimiter pair'), + array('*foo.*', false, '"*" is not considered as a valid delimiter'), + array('?foo.?', false, '"?" is not considered as a valid delimiter'), ); } }