> 백엔드 개발 > PHP 튜토리얼 > PHP에서 디렉토리를 탐색하는 방법, 디렉토리 탐색을 위한 PHP 비재귀 알고리즘의 예

PHP에서 디렉토리를 탐색하는 방법, 디렉토리 탐색을 위한 PHP 비재귀 알고리즘의 예

WBOY
풀어 주다: 2016-07-25 08:51:29
원래의
941명이 탐색했습니다.
  1. function myscandir($pathname){
  2. foreach( glob($pathname) as $filename ){
  3. if(is_dir($filename)){
  4. myscandir($filename.'/*');
  5. }else{
  6. echo $filename.'
    ';
  7. }
  8. }
  9. }
  10. myscandir('D:/wamp/www/exe1/*');
  11. ?>
复制代码

2. 方法2

  1. function myscandir($path){
  2. $mydir=dir($path);
  3. while($file=$mydir->read()){
  4. $p=$path.'/'.$file;
  5. if(($file!=".") AND ($file!="..")){
  6. echo $p.'
    ';
  7. }
  8. if((is_dir($p)) AND ($file!=".") AND ($file!="..")){
  9. myscandir($p);
  10. }
  11. }
  12. }
  13. myscandir(dirname(dirname(__FILE__)));
  14. ?>
复制代码

二、php目录遍历函数opendir用法

opendir()函数的作用: 打开目录句柄,如果该函数成功运行,将返回一组目录流(一组目录字符串),如果失败将返回错误[error],你可以在函数的最前面加上“@”来隐藏错误.

syntax语法:opendir(directory,context) parameter

参数:description

描述:directory required. specifies the directory to stream    必要参数,指定目录对象,可选参数,指定需要处理的目录对象的context,这个context包括了一组选项,它可以对文本流的显示方式进行改变。

代码:

  1. $dir = "./";
  2. // open a known directory, and proceed to read its contents
  3. if (is_dir($dir))
  4. {
  5. if ($dh = opendir($dir)) {
  6. while (($file = readdir($dh)) !== false) {
  7. echo "filename: $file : filetype: " . filetype($dir . $file) . "n"."
    ";
  8. }
  9. closedir($dh);
  10. }
  11. }
  12. ?>
复制代码

三、php非递归算法遍历目录下所有文件

php不用递归实现列出目录下所有文件的代码

代码:

  1. /**

  2. * PHP 非递归实现查询该目录下所有文件
  3. * @param unknown $dir
  4. * @return multitype:|multitype:string
  5. */
  6. function scanfiles($dir) {
  7. if (! is_dir ( $dir ))
  8. return array ();

  9. // 兼容各操作系统

  10. $dir = rtrim ( str_replace ( '\', '/', $dir ), '/' ) . '/';

  11. // 栈,默认值为传入的目录

  12. $dirs = array ( $dir );

  13. // 放置所有文件的容器

  14. $rt = array ();

  15. do {

  16. // 弹栈
  17. $dir = array_pop ( $dirs );

  18. // 扫描该目录

  19. $tmp = scandir ( $dir );

  20. foreach ( $tmp as $f ) {

  21. // 过滤. ..
  22. if ($f == '.' || $f == '..')
  23. continue;
  24. // 组合当前绝对路径
  25. $path = $dir . $f;
  26. // 如果是目录,压栈。
  27. if (is_dir ( $path )) {
  28. array_push ( $dirs, $path . '/' );
  29. } else if (is_file ( $path )) { // 如果是文件,放入容器中
  30. $rt [] = $path;
  31. }
  32. }

  33. } while ( $dirs ); // 直到栈中没有目录

  34. return $rt;

  35. }

复制代码


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿