1<?php 2 3/* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Symfony\Component\Finder\Iterator; 13 14/** 15 * PathFilterIterator filters files by path patterns (e.g. some/special/dir). 16 * 17 * @author Fabien Potencier <fabien@symfony.com> 18 * @author Włodzimierz Gajda <gajdaw@gajdaw.pl> 19 */ 20class PathFilterIterator extends MultiplePcreFilterIterator 21{ 22 /** 23 * Filters the iterator values. 24 * 25 * @return bool true if the value should be kept, false otherwise 26 */ 27 public function accept() 28 { 29 $filename = $this->current()->getRelativePathname(); 30 31 if ('\\' === \DIRECTORY_SEPARATOR) { 32 $filename = str_replace('\\', '/', $filename); 33 } 34 35 return $this->isAccepted($filename); 36 } 37 38 /** 39 * Converts strings to regexp. 40 * 41 * PCRE patterns are left unchanged. 42 * 43 * Default conversion: 44 * 'lorem/ipsum/dolor' ==> 'lorem\/ipsum\/dolor/' 45 * 46 * Use only / as directory separator (on Windows also). 47 * 48 * @param string $str Pattern: regexp or dirname 49 * 50 * @return string regexp corresponding to a given string or regexp 51 */ 52 protected function toRegex($str) 53 { 54 return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; 55 } 56} 57