Heim >php教程 >php手册 >使用PHP函数scandir排除特定目录

使用PHP函数scandir排除特定目录

WBOY
WBOYOriginal
2016-06-13 09:33:53853Durchsuche

scandir()函数返回一个数组,其中包含指定路径中的文件和目录。如下所示:

例子:

复制代码 代码如下:

print_r(scandir('test_directory'));
?>


输出:

复制代码 代码如下:

Array
(
[0]=>.
[1]=>..
[2]=>1.txt
[3]=>2.txt
)


大部分情况只需要该目录的文件列表数组,如下:

复制代码 代码如下:

Array
(
[0]=>1.txt
[1]=>2.txt
)


一般是通过排除“.”或者“..”的数组项解决的:

复制代码 代码如下:

functionfind_all_files($dir)
{
    $root = scandir($dir);
    foreach($rootas$value)
    {
        if($value === '.' || $value === '..'){
            continue;
        }
        if(is_file("$dir/$value")){
            $result[] = "$dir/$value";
            continue;
        }
        foreach(find_all_files("$dir/$value")as$value)
        {
            $result[] = $value;
            }
        }
    return$result;
    }
?>


另外一种方法,利用array_diff函数,剔除scandir函数执行得到的数组:

复制代码 代码如下:

$directory='/path/to/my/directory';
$scanned_directory=array_diff(scandir($directory),array('..','.'));
?>


通常情况代码管理会产生.svn文件,或者限制目录访问权限的.htaccess等文件。所以通过array_diff函数来过滤会更方便。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn