24'C 구름 많음
서울 강남구
아래 예는 폴더 내의 내용을 재귀적으로 배열로 만들어 반환하는 사용자 함수입니다. 폴더이면 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
)
)
....
}
*/
?>