2012-01-04 56 views
0

到目前为止,我只*工作,但,是有什么样向前看符号,群体?glob模式能处理什么样的特殊字符?

我想获得的所有*.php除了controller.php

我在这glob(dirname(__FILE__) . DIRECTORY_SEPARATOR . '*.php')呼吁改变,排除controller.php

或者我应该避免glob和其他代替的东西的工作?

+1

['glob'](http://php.net/glob)联合机['scandir'](http://php.net/scandir)与['的fnmatch '](http://php.net/fnmatch)。如果您需要更复杂的规则,请将['scandir'](http://php.net/scandir)与['preg_grep'](http://php.net/preg_grep)结合使用。或者使用['RecursiveDirectoryIterator'](http://php.net/RecursiveDirectoryIterator)和['RegexIterator'](http://php.net/RegexIterator) – mario 2012-01-04 13:45:20

回答

2

PHP水珠()使用由所述的libc水珠()函数,其类似于由普通壳使用的规则使用的规则。所以你可以使用的模式是相当有限的。

水珠()返回所有匹配的给定模式的路径的阵列。过滤controller.php结果数组是一种解决方案。

1

http://www.manpagez.com/man/3/glob/The glob() function is a pathname generator that implements the rules for file name pattern matching used by the shell.

它是一个单一的过滤器,无异常(PHP幕后的​​3210后端)。如果你想要* .php,你会得到* .php。

0

尝试此,

<?php 
$availableFiles = glob("*.txt"); 
foreach ($availableFiles as $key => $filename) { 
    if($filename == "controller.php"){ 
     unset($availableFiles[$key]); 
    } 
} 
echo "<pre>"; print_r($availableFiles); 
?>