아래 예는 폴더 내의 내용을 재귀적으로 배열로 만들어 반환하는 사용자 함수입니다. 폴더이면 key 값의 끝에 / 가 붙고, 숫자 key 이면 value 값에 파일 이름이 저장한 재귀적 배열을 반환합니다.

$f 인수에 임의의 값을 지정하면 파일도 배열에 저장합니다.

<?php
 function file_dir($dir, $f = null)
 {
   $raw = array();
   $dir= preg_replace(array("@[\.]+@", "@[/]+@"), array(".", "/"), trim($dir));
   if(substr($dir, -1) === '/')
   {
     $dir= substr($dir, 0, -1);
   }

   if(is_dir($dir))
   {
     clearstatcache();
     foreach(@scandir($dir) as $node)
     {
       if( ($node !== ".") && ($node !== "..") )
       {
          if(is_file($dir. '/' . $node))
          {
             clearstatcache();
             if($f)
             {
                $raw[] = rawurlencode($node);
             }
             continue;
          }
          $raw[rawurlencode($node) . '/'] = 
                                       file_dir($dir. '/' . $node, $f);
      }
    }
  }
  return $raw;
 }
 $row = file_dir('..../dirbbs/////', true);
 print_r($row);
 /*
 결과 :
 Array
 (
    [0] => README.txt
    [1] => add.htm
    [2] => add_dir.htm
    [3] => bbs_mysql
    [4] => bbsdir_mysql
    [5] => config.inc
    [6] => dberror.htm
    [7] => delete.htm
    [8] => delete_dir.htm
    [9] => detail.htm
    [file/] => Array
        (
            [5/] => Array
                (
                    [0] => addfind.gif
                )

            [8/] => Array
                (
                    [0] => write.gif
                )
        )   
     ....
 }
 */
 ?>

0 댓글