PHP에서 Scandir 함수는 지정된 디렉토리에서 파일 및 디렉토리 목록을 얻는 데 사용됩니다. 지정된 디렉토리의 모든 파일 및 하위 디렉토리의 이름이 포함 된 배열을 반환합니다. Scandir 의 기본 사용은 매우 간단하지만 파일을 디렉토리와 구별하는 식별을 직접 제공하지는 않습니다. 그러나 다른 기능을 결합하여 각 항목의 유형을 쉽게 식별 할 수 있습니다.
Scandir 함수의 구문은 다음과 같습니다.
<span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$sorting_order</span></span><span> = SCANDIR_SORT_ASCENDING [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ]] )
</span></span>$ 디렉토리 : 스캔하는 디렉토리의 경로.
$ sorting_order : 정렬 순서를 지정하고 오름차순 순서 ( scandir_sort_ascending )로 기본 사항을 지정합니다.
$ 컨텍스트 : 컨텍스트 스트림, 선택 사항을 지정합니다.
Scandir는 일반적으로 파일 이름과 서브 디렉토리의 이름 인 디렉토리의 내용이 포함 된 배열을 반환합니다. 반환 값에는 현재 디렉토리 ( . ) 및 상위 디렉토리 ( .. )의 이름이 포함됩니다.
Scandir가 반환 한 파일과 디렉토리를 구별하기 위해 is_file () 및 is_dir () 함수를 사용할 수 있습니다. 주어진 경로가 파일인지 디렉토리인지 결정하는 데 사용됩니다. Scandir 의 결과를 가로 질러 각 항목의 유형을 쉽게 식별 할 수 있습니다.
다음은 scandir를 사용하여 디렉토리 목록을 가져 와서 iS_file () 및 is_dir () 의 파일 및 디렉토리를 판단하는 방법을 보여주는 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/directory'</span></span><span>; </span><span><span class="hljs-comment">// 디렉토리를 스캔하도록 설정하십시오</span></span><span>
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
</span><span><span class="hljs-comment">// 뛰어 올라 "." 그리고 ".."</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file</span></span><span> == </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-variable">$file</span></span><span> == </span><span><span class="hljs-string">'..'</span></span><span>) {
</span><span><span class="hljs-keyword">continue</span></span><span>;
}
</span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-variable">$directory</span></span><span> . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$file</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" 디렉토리입니다\n"</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_file</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" 파일입니다\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" 알려지지 않은 유형입니다\n"</span></span><span>;
}
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>먼저 Scandir ($ Directory) 에 전화하여 지정된 디렉토리에 모든 파일과 디렉토리를 가져옵니다.
반환 된 파일 목록을 통해 루프를 사용하여 Foreach를 사용하십시오.
각 항목에 대해 제외 . 그리고 .. 첫째, 현재 디렉토리와 부모 디렉토리를 각각 나타내며 일반적으로 추가 처리가 필요하지 않기 때문입니다.
그런 다음 IS_DIR ()을 사용하여 항목이 디렉토리인지 확인하십시오. 디렉토리 인 경우 해당 프롬프트는 출력입니다.
다음으로 IS_FILE ()을 사용하여 파일인지 확인하십시오. 파일 인 경우 해당 프롬프트는 출력입니다.
위의 조건 중 어느 것도 충족되지 않으면 항목이 특수 파일 (예 : 기호 링크 등)으로 간주 할 수 있습니다.
/path/to/your/directory를 가정합니다.
file1.txt (파일)
file2.php (파일)
Subdir1 (디렉토리)
Subdir2 (디렉토리)
위 코드를 실행 한 후 출력은 다음과 같습니다.
<span><span>file1.txt 파일입니다
file2.php 파일입니다
subdir1 디렉토리입니다
subdir2 디렉토리입니다
</span></span>Scandir 및 is_file () 및 is_dir () 함수를 결합하여 파일 시스템의 항목 유형을 쉽게 판단한 다음 파일 및 디렉토리를 구별 할 수 있습니다. Scandir 자체는 직접 식별 정보를 제공하지는 않지만 다른 파일 시스템 기능과 함께 사용하면이 작업이 매우 간단합니다.