readdir을 활용한 파일 목록 읽기 예제, 파일 탐색기
opendir, readdir, is_dir 함수를 사용하는 재귀 함수로 구성하였다.
디렉터리는 제외하고 파일만 조회하고 탐색된 전체 경로(full path)를 배열로 반환한다.
사용방법은 함수의 인자로 탐색할 경로를 명세하면 된다.
https://github.com/muabow/home/tree/main/src/php/get_file_list
소스코드
<?php
function get_file_list($_target_dir) {
if( $fp = opendir($_target_dir) ) {
$files = Array();
$in_files = Array();
while( $file = readdir($fp) ) {
if( $file[0] != '.' ) {
if( is_dir("{$_target_dir}/{$file}") ) {
$in_files = get_file_list("{$_target_dir}/{$file}");
if( is_array($in_files) ) {
$files = array_merge($files, $in_files);
}
} else {
array_push($files, "{$_target_dir}/{$file}");
}
}
}
closedir($fp);
return $files;
}
}
?>
사용방법
<?php
// /var/log/apache2 경로를 탐색한다.
$arr_file_list = get_file_list("/var/log/apache2");
print_r($arr_file_list);
?>
결과
muabow@muabow:~/public_html$ php get_file_list.php
Array
(
[0] => /var/log/apache2/error.log.14.gz
[1] => /var/log/apache2/access.log.3.gz
[2] => /var/log/apache2/access.log.12.gz
[3] => /var/log/apache2/other_vhosts_access.log.1
[4] => /var/log/apache2/error.log.12.gz
[5] => /var/log/apache2/access.log.14.gz
[6] => /var/log/apache2/error.log.5.gz
[7] => /var/log/apache2/error.log.2.gz
[8] => /var/log/apache2/error.log.8.gz
[9] => /var/log/apache2/access.log.6.gz
[10] => /var/log/apache2/access.log.8.gz
[11] => /var/log/apache2/other_vhosts_access.log
[12] => /var/log/apache2/error.log.9.gz
[13] => /var/log/apache2/access.log.1
[14] => /var/log/apache2/error.log.11.gz
[15] => /var/log/apache2/access.log
[16] => /var/log/apache2/error.log
[17] => /var/log/apache2/error.log.3.gz
[18] => /var/log/apache2/access.log.2.gz
[19] => /var/log/apache2/access.log.10.gz
[20] => /var/log/apache2/access.log.9.gz
[21] => /var/log/apache2/error.log.7.gz
[22] => /var/log/apache2/error.log.1
[23] => /var/log/apache2/access.log.11.gz
[24] => /var/log/apache2/access.log.4.gz
[25] => /var/log/apache2/access.log.5.gz
[26] => /var/log/apache2/error.log.6.gz
[27] => /var/log/apache2/access.log.7.gz
[28] => /var/log/apache2/error.log.13.gz
[29] => /var/log/apache2/error.log.10.gz
[30] => /var/log/apache2/error.log.4.gz
[31] => /var/log/apache2/access.log.13.gz
)
해당 함수는 파일 탐색 시 전체 경로를 배열로 반환하기 때문에 파일을 제어해야 하는 상황에 유용하게 사용된다.
끝.
'IT > web' 카테고리의 다른 글
[PHP] 문자열 앞글자 삭제하기 예제, ltrim/substr 활용 (0) | 2022.01.12 |
---|---|
[PHP] fileperms을 활용한 파일 탐색과 퍼미션 검사 (0) | 2022.01.06 |
[PHP] web shell 설명 및 예제 공유 (0) | 2022.01.06 |
[PHP] curl GET/POST Rest API 인증, 요청 및 JSON 응답 처리 방법 (0) | 2022.01.06 |
[javascript] javascript IP 주소, 포트 유효성 검사 예제 (2) | 2022.01.05 |
댓글