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

scandir()函数返回一个数组,其中包含指定路径中的文件和目录。这篇文章主要介绍了使用PHP函数scandir排除特定目录,需要的朋友可以参考下

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

  1. <?php
  2. print_r(scandir('test_directory'));
  3. ?>

输出:

  1. Array
  2. (
  3. [0]=>.
  4. [1]=>..
  5. [2]=>1.txt
  6. [3]=>2.txt
  7. )

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

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

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

  1. <?php
  2. functionfind_all_files($dir)
  3. {
  4. $root = scandir($dir);
  5. foreach($rootas$value)
  6. {
  7. if($value === '.' || $value === '..'){
  8. continue;
  9. }
  10. if(is_file("$dir/$value")){
  11. $result[] = "$dir/$value";
  12. continue;
  13. }
  14. foreach(find_all_files("$dir/$value")as$value)
  15. {
  16. $result[] = $value;
  17. }
  18. }
  19. return$result;
  20. }
  21. ?>

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

  1. <?php
  2. $directory='/path/to/my/directory';
  3. $scanned_directory=array_diff(scandir($directory),array('..','.'));
  4. ?>

通常情况代码管理会产生.svn文件,或者限制目录访问权限的.htaccess等文件。所以通过array_diff函数来过滤会更方便。