재귀호출을 이용한 디렉토리 트리구조...

프로그래밍/PHP 2006/07/13 17:19

http://navyism.com

쓸일이 있어 간단하게 만들어 보았습니다...
대단한 뭔가가 있는건 아니지만...
막상 생각할려면 -.-머리아프네요;;;

<?
function get_tree($start)
{
$dh=@opendir($start);

$block_size=@explode("/",$start);

       for($i=1;$i<sizeof($block_size);$i++)
       {
       $block.="<font color=#999999>│</font>";
       }

       unset($buff);

       while($dir=@readdir($dh))
       {
               if($dir=="." || $dir=="..")
               {
               continue;
               }

               if(!$dh2=@opendir("$start/$dir"))
               {
               continue;
               }
       
       $buff[]=$dir;        
       @closedir($dh2);
       }

       @sort($buff);

       for($i=0;$i<sizeof($buff);$i++)
       {        
       echo $block." <font color=#999999>+</font> $buff[$i]<br>\n";
       get_tree("$start/$buff[$i]");
       }

@closedir($dh);
}

get_tree(".");
?>


=========================================================
+ main
│ + images
││ + menu
││ + top
│ + work
뭐 대충 이런식으로 나옵니다...

응용하면 아래와 같이....나타납니다.
http://libphp.com/explorer/


출처 : PHPSCHOOL
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이젠

디렉토리내의 모든 파일 일괄 삭제하기

프로그래밍/PHP 2006/07/10 15:51
////////////////////////////////////////////////////////////////////////////
//                           디렉토리 삭제하기
//
// 사용법 : directoryDelete('삭제할 디렉토리경로')
/////////////////////////////////////////////////////////////////////////////
function directoryDelete($dir
)
{
   if(
substr($dir, -1)!='/') { $dir = $dir.'/'
; }
   else { 
$dir = $dir
; }

   if(
is_dir($dir
)) {
       if (
$dh = opendir($dir
)) {
           
$i = 0
;
           while ((
$file = readdir($dh)) !== false
)
           {
               if((
$file!='.' && $file!='..') && (filetype($dir . $file)!='dir'
)) {
                   
$filename[$i] = $file
;
                   
$i
++;
               }
           }
           
closedir($dh
);
       }
       
       for(
$ii = 0 ; $ii < $i ; $ii
++)
       {
           if(!
unlink($dir . $filename[$ii])){ echo "파일삭제실패"
; exit; }
       }
       
rmdir($dir
);
   } else {
       return
false
;
   }
}

문제점...
역시 디렉토리가 있다면 삭제되지 않는다(파일만 삭제됨)
또한 디렉토리가 있다면 자기자신의 디렉토리 또한 삭제되지 않는다.

해결법...
재귀호출을 이용해서 적용하면 될 것임(조만간 해결 해야겠음;;;)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이젠

디렉토리내의 모든파일을 다른 디렉토리로 옮기는 함수

프로그래밍/PHP 2006/07/10 14:52
//////////////////////////////////////////////////////////////////////////// 
//               디렉토리내의 모든파일을 다른 디렉토리로 옮기는 함수 
// 
// 사용법 : fileCopy('원본파일 디렉토리', '이동시킬 디렉토리', '파일 삭제 여부') 
/////////////////////////////////////////////////////////////////////////////
function fileCopy($source_dir, $dest_dir, $is_del='N')
{
   if(
substr($source_dir, -1)!='/') { $source_dir = $source_dir.'/'; }
   else {
$source_dir = $source_dir; }

   if(
substr($dest_dir, -1)!='/') { $dest_dir = $dest_dir.'/'; }
   else {
$dest_dir = $dest_dir; }

   if (
is_dir($source_dir)) {
       if (
$dh = opendir($source_dir)) {
           
$i = 0;
           while ((
$file = readdir($dh)) !== false)
           {
               if((
$file!='.' && $file!='..' && $file!='index.php') && (filetype($source_dir . $file)!='dir')) {
                   
$filename[$i] = $file;
                   
$i++;
               }
           }
           
closedir($dh);
       }
   }
   
   for(
$ii = 0 ; $ii < $i ; $ii++)
   {
       if(!
copy($source_dir . $filename[$ii], $dest_dir . $filename[$ii])){ echo "파일복사실패 $ii"; exit; }
       if(
$is_del=='Y') {
           if(!
unlink($source_dir . $filename[$ii])){ echo "파일삭제실패"; exit; }
       }
   }
}


문제점....
하위 디렉토리가 있다면 옮겨지지 않는다.
즉 파일만 옮겨지도록 되어있습니다.

해결법...
재귀호출을 이용해서 적용하면 될 것임(조만간 해결 해야겠음;;;)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이젠

디렉토리 만들기 함수

프로그래밍/PHP 2006/07/10 14:43
////////////////////////////////////////////////////////////////////////////
//                           디렉토리 만들기
//
// 사용법 : directoryMake('생성할 디렉토리 전체경로(이름)', '인덱스파일 생성여부')
// 인덱스 파일을 생성하는 이유는 주소를 직접 치고 왔을경우 빈 공백페이지를 보여주기 위함
/////////////////////////////////////////////////////////////////////////////
function directoryMake($dir, $index='N'
)
{
   if(!
is_dir($dir
)) { 
       @
mkdir($dir, 0707
);
       @
chmod($dir, 0707
);

       
//인덱스 화일을 만들어 다른 페이지가 안보이도록 함....
       
if($index=='Y'
)
       {
           if(
substr($dir, -1)!='/') { $dir = $dir.'/'
; }
           else { 
$dir = $dir
; }

           
// 디렉토리에 있는 파일의 목록을 보이지 않게 한다.
           
$file = $dir.'index.php'
;
           
$f = @fopen($file, "w"
);
           @
fwrite($f, ""
);
           @
fclose($f
);
           @
chmod($file, 0606
);
       }
   } else {
       return
false
;
   }
}
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이젠

이미지 프린트하기

프로그래밍/PHP 2006/07/10 11:42

간단히....

이미지를 클릭하는 페이지 1.html
프린트 될 페이지 print.html



=====================     1.html     =====================

내용보기

=====================     print.html     =====================

내용보기

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아이젠
이전페이지 12 다음페이지