> 백엔드 개발 > PHP 튜토리얼 > 특정 디렉토리를 제외하는 PHP scandir() 함수 사용 예

특정 디렉토리를 제외하는 PHP scandir() 함수 사용 예

怪我咯
풀어 주다: 2023-03-13 12:42:01
원래의
2406명이 탐색했습니다.

scandir()는 지정된 디렉터리에 있는 파일 및 디렉터리의 배열을 반환합니다. 성공하면 파일 및 디렉터리 배열을 반환합니다. 실패 시 FALSE를 반환합니다. 디렉토리가 디렉토리가 아닌 경우 E_WARNING 수준 오류가 발생합니다.

Syntax

scandir(directory,sorting_order,context);
로그인 후 복사
ParametersDescription
directory필수입니다. 스캔할 디렉터리를 지정합니다.
sorting_order

선택사항. 정렬 순서를 지정합니다. 기본값은 0이며 알파벳 오름차순을 나타냅니다.

SCANDIR_SORT_DESCENDING 또는 1로 설정하면 알파벳 내림차순으로 정렬한다는 의미입니다.

SCANDIR_SORT_NONE으로 설정하면 정렬되지 않은 결과를 반환합니다.

context선택사항. 디렉터리 핸들의 환경을 지정합니다. context는 디렉터리 스트림의 동작을 수정하는 옵션 집합입니다.

예:코드는 다음과 같습니다.

<?php
print_r(scandir(&#39;test_directory&#39;));
?>
로그인 후 복사

출력은 다음과 같습니다.

Array
(
[0]=>.
[1]=>..
[2]=>1.txt
[3]=>2.txt
)
로그인 후 복사

대부분의 경우 다음과 같이 디렉터리의 파일 목록 배열만 필요합니다.

Array
(
[0]=>1.txt
[1]=>2.txt
)
로그인 후 복사

일반적으로 "." 또는 ".." 제외 배열 항목이 해결되었습니다. 코드는 다음과 같습니다.

<?php
functionfind_all_files($dir)
{
    $root = scandir($dir);
    
foreach
($rootas$value)
    {
        if($value === &#39;.&#39; || $value === &#39;..&#39;){
            
continue
;
        }
        if(is_file("$dir/$value")){
            $result[] = "$dir/$value";
            continue;
        }
        foreach(find_all_files("$dir/$value")as$value)
        {
            $result[] = $value;
            }
        }
    
return
$result;
    }
?>
로그인 후 복사

또 다른 방법은 array_diff 함수를 사용하여 scandir 함수를 실행하여 얻은 배열을 제거하는 것입니다. 코드는 다음과 같습니다.

<?php
$directory=&#39;/path/to/my/directory&#39;;
$scanned_directory=array_diff(scandir($directory),array(&#39;..&#39;,&#39;.&#39;));
?>
로그인 후 복사

일반적으로 코드 관리는 svn 파일 또는 .htaccess 및 디렉터리 액세스 권한을 제한하는 기타 파일에서 발생합니다. 따라서 array_diff 함수를 통해 필터링하는 것이 더 편리합니다.

위 내용은 특정 디렉토리를 제외하는 PHP scandir() 함수 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿