파일을 찾아야할 때 유용한 클레스 소스입니다.

dirname => 검색할 폴더, 상대경로, 절대경로 가능합니다. 예) ../board, ../../image, ../excel/

엑셀파일을 찾아야할때는 *.xls

파일 전체이름을 모르고 habony로 시작하는 파일이라면 habony* 로 *를 붙여주시면 됩니다.

 

결과는 다음을 출력합니다.

array path : 파일이 위치하는 경로

array name : 파일, 폴더 이름

array size : 파일, 폴더 크기

array date : 파일, 폴더 만든 시간

array perms : 파일 퍼미션

 

 <?php
// $to = new File;
// $to->search(dirname, '*.php');

// echo "<pre>";
// print_r($to->path);
// print_r($to->name);
// print_r($to->size);
// print_r($to->date);
// print_r($to->perms);





class 
File
{
    var 
$path 
= array();
    var 
$name 
= array();
    var 
$perms 
= array();
    var 
$size 
= array();
    var 
$date 
= array();


    function 
array_scandir($path
)
    {
        
$path realpath($path
);


        if(
$this->is_file($path
))
        {
            return 
false
;
        } 

        $dir  = array();


        foreach(
$this->scandir($path) as $nlist
)
        {
            if(
$this->is_dir($path '/' $nlist
))
            {
                
$dir[] = $nlist

            }
        }
        return 
$dir
;
    }


    function 
search($odir$str
)
    {
        
$odir realpath($odir
);
        
$this->glob($odir$str
);

        if(
$this->is_dir($odir
))
        {
            
$dir $this->array_scandir($odir
);
            
            for(
$i=0$i<count($dir); $i
++)
            {
                
set_time_limit(0
);
                
$this->glob($odir '/' $dir[$i], $str
);
                
$this->search($odir '/' $dir[$i], $str
);
            }
        }
        return 
false
;
    }

    function 
glob($dir$str
)
    {
        if(
$this->is_dir($dir
))
        {
            
$raw 
= array();
            
chdir(realpath($dir
));

            foreach (
glob(preg_quote($str)) as $list
)
            {
                
$raw['path'] = $dir
;
                
$raw['name'] = $list
;
                
$raw['perms'] = $this->fileperms($list
);
                
$raw['size'] = $this->filesize($list
);
                
$raw['date'] = date('Y-m-d G:i:s'$this->filemtime($list
));

                
$this->dump_glob($raw
);
            }
        }
        return 
false
;
    }

    function 
scandir($path
)
    {
        if(
$this->is_dir($path
))
        {
            
$raw 
= array();
            
$fp opendir($path
);
            while (
false !== ($entry readdir($fp
)))
            {
                if (
$entry != "." && $entry != ".."
)
                {
                    
$raw[] = $entry
;
                }
            }

            if(
is_resource($fp
))
            {
                
closedir($fp
);
            }

            return 
$raw
;
        }
        return 
false
;
    }

    function 
fileperms($target
)
    {
        
$perms substr(sprintf('%o'fileperms($target)), -4
);
        
clearstatcache
();

        if(
false !== $perms
)
        {
            return 
substr($perms1
);
        }
        return 
'n/a'
;
    }

    function 
filesize($file
)
    {
        if(
$this->is_file($file
))
        {
            
$filesize filesize($file
);
            
clearstatcache
();

            return 
$filesize
;
        }
        return 
false
;
    }

    function 
filemtime($filename
)
    {
        if(isset(
$filename) && $this->is_file($filename
))
        {
            
$filemtime filemtime($filename
);
            
clearstatcache
();

            return 
$filemtime
;
        }
        return 
false
;
    }

    function 
is_dir($dir
)
    {
        
$fp is_dir($dir
);
        
clearstatcache
();

        if(
$fp
)
        {
            return 
true
;
        }
        else
        {
            return 
false
;
        }
    }

    function 
is_file($filename
)
    {
        
$fp is_file($filename
);
        
clearstatcache
();

        if(
$fp
)
        {
            return 
true
;
        }
        else
        {
            return 
false
;
        }
    }

    function 
dump_glob($raw
)
    {
        
$this->path[]  = $raw['path'
];
        
$this->name[]  = $raw['name'
];
        
$this->perms[] = $raw['perms'
];
        
$this->size[]  = $raw['size'
];
        
$this->date[]  = $raw['date'
];
    }
}
?>