크리에이티브 커먼즈 라이센스

홈페이지HOME

PHP

JavaScript

HTML

CSS

드롭다운메뉴

제로보드4

도   움   말

백지 건강강좌/자가임상체험

물박사(자가면역질환...)^미러

전동명(천연물질사전)^미러

竹田 장승옥(블로그)^글목록

계산환산(계산기)^ 단위변환

관주성경 TTS 일반파일 TTS

바이블로 Bible_ro 다운로드

다운로드>폰에 복사
>파일선택...설치됩니다.

[도움말 보기] 바로가기

개선 요구, 충고는
아래 관리자 연락
전화/메일 부탁 드립니다.
최대한 빨리 처리하고
업데이트 올리겠습니다.

scandir()_php5.txt


필자는 전에는 몇 줄로 코딩하던 것을 새 함수 한 줄로 처리가능한 부분에 매력을 느낀다.


가령 전에는 저렇게 해야 되었지만,


$dir = "/tmp";

$dh  = opendir($dir);

while (false !== ($filename = readdir($dh))) {

   $files[] = $filename;

}

sort($files);

print_r($files);

rsort($files);

print_r($files);


php5에서는 이렇게 하면 된다.


$dir    = '/tmp';

$files1 = scandir($dir);

$files2 = scandir($dir, 1);

print_r($files1);

print_r($files2);


$dh  = opendir($dir);에서 sort($files);까지 이어지는 여러 줄이 $files1 = scandir($dir); 한 줄로 끝난다.

이런 함수들을 찾기 위해 검색엔진들을 사용해보면 찾기가 만만치 않다.

한글매뉴얼의 각 함수 페이지까지 들어가서 함수 이름에 '(PHP 5)' 표시를 보고 찾는 것이 만만치 않은 일이지만 그래도 가장 확실하고 가장 빠른 길로 생각된다.

우선 php5 함수 및 용례에서 링크를 제공한다.


문법 : array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

기능 : 하나의 폴더를 읽어 배열(서브폴더명, 파일명)을 리턴한다.

리턴값 : 배열


[명령]

    $dirs = scandir('..');

    print_r($dirs);

[출력]

    Array ( [0] => . [1] => .. [2] => _download ... [108] => 훌 )


역순 정렬된 리턴값 받기


scandir 함수는 배열 요소를 정렬해서 돌려 준다.

역순 정렬을 원하면 제2인수로 1을 전달하면 된다.


[명령]

    $dirs = scandir('..', 1);

    print_r($dirs);

[출력]

    Array ( [0] => 훌 [1] => 홈 [2] => 함 ... [106] => _download [107] => .. [108] => . )


배열 요소 걸러내기


array_diff() 함수의 제2인수로 제외할 폴더(파일)명을 전달하여 걸러낼 수 있다.


[명령]

    $dirs = array_diff(scandir('..'), array('..', '.'));

    print_r($dirs);

[출력]

    Array ( [2] => _download [3] => _image ... [108] => 훌 )


값만 출력하기


배열 요소 하나는 키와 값을 가지고 있어서 '[2] => _download'와 같이 출력된다.

우리가 필요로 하는 것은 '_download'이다.


[명령]

    $dirs = array_diff(scandir('..'), array('..', '.'));

    foreach($dirs as $value) echo($value);

[출력]

    _download_image_man_master_styleFile_tagabcd ... 핑한함홈훌


파일만 출력하기


[명령]

    foreach($dirs as $value) if(is_file("../".$value)) echo($value);

[출력]

    hosting_index.htmlindex.html


리턴값에 경로가 포함되어 있지 않으므로, 경로를 붙여 주어야 파일 여부를 인식한다.

함수 레퍼런스의 다음 예제를 참고하라.


<?php

function find_all_files($dir)

{

    $root = scandir($dir);

    foreach($root as $value)

    {

        if($value === '.' || $value === '..') {continue;}

        if(is_file("$dir/$value")) {$result[]="$dir/$value";continue;}

        foreach(find_all_files("$dir/$value") as $value)

        {

            $result[]=$value;

        }

    }

    return $result;

}

?>


위 함수는 지정된 폴더의 파일리스트 및 모든 서브폴더들의 파일리스트를 리턴할 것이다.

위 함수의 사용 결과를 보자.


[명령]

    $dir = "..";

    $result = find_all_files($dir);

    foreach($result as $value) echo($value." ");

[출력]

    ../_download/HanConv.exe ../_download/RedUTF8.exe ../_download/WinMerge-2.14.0-Setup.exe ... ../홈/홈페이지자동화(2).txt ../홈/홈페이지자동화.htm ../훌/훌륭한 대화 상자의 중요성_MS.htm


위 함수의

if(is_file("$dir/$value")) {$result[]="$dir/$value";continue;}

줄을 보자.

조건문에 continue 명령을 사용함으로써, else(if) 없이도 다른 경우를 처리하고 있다.


파일 아닌 폴더만 출력하기


[명령]

    $dirs = array_diff(scandir('..'), array('..', '.'));

    foreach($dirs as $value) if(!is_file("../".$value)) echo($value);

[출력]

    _download_image_man_master_styleFile_tagabcd ... 표핑한함홈훌


이 정도로 하자. 더 할 생각이 나면 덧붙이겠다.

ID:
PW:

     0 분
     2 분

자유게시판

건강백과 HOME

홈페이지 HOME

조   약     HOME

생활지혜 HOME

서식양식 HOME

법원 전산양식 검색

In Na zum

비공개 HOME

백과넷 포탈 : 건강/법률(메인)/홈피/서식/조약/생활지혜

◁ 2002.9.1.~2020.9.22. ▷

관리자 연락(저작권 의심 신고) : 김병희 010-6204-4973 k8z7@hanmail.net