PHP 에서 디렉토리관련하여 상당히 많은 함수들이 제공된다. 그중 패턴을 이용하여 파일명 리스트를 추출할 수 있는 glob 라는 함수가 있는데 오늘은 이함수에 대해 간단하게나마 알아 보도록 하자
먼저 이함수는 아래의 PHP 그룹 사이트에서 상세 정보를 확인 가능하다.
사용 방법의 경우 아래와 같이 특정 패턴을 이용하여 검색이 가능하다.
<?php
$glob = glob('*.php'); // 현재 디렉토리에서 확장자가 .php 로 끝나는 모든 파일을 추출
echo '<pre>';
print_r($glob);
echo '</pre>';
?>
위의 함수는 현재 디렉토리에서 확장자가 .php 로 끝나는 모든 파일들을 추출할 수 있다. 표시될때는 파일의 경로 없이 파일명만 추출된다.
만약 디렉토리를 함께 추출하고 싶다면 아래와 같이 디렉토리를 붙여 주면 된다.
<?php
$glob = glob(__DIR__.'/*.php'); // 해당 디렉토리에서 특정 파일만
echo '<pre>';
print_r($glob);
echo '</pre>';
?>
좀더 나아가서 파일 확장자의 개수를 추출해 주는 프로그램을 간단하게 만들면 아래와 같이 할 수 있다.
<?php
$filetype = array('jpg'=>0, 'png'=>0, 'gif'=>0, 'php'=>0,'js'=>0,'css'=>0); // 파일확장자
foreach($filetype as $k=>$v){
$filelist = glob('*.'.$k); // 해당 디렉토리에서 특정 파일만
$filetype[$k] = count($filelist);
}
echo '<pre>';
print_r($filetype);
echo '</pre>';
?>
또한 이 함수를 이용하면 복잡한 디렉토리 함수를 이용하지 않고도 아래와 같이 간단하게 현재 디렉토리안의 포함된 디렉토리 개수 와 파일 개수를 추출할 수 있다.
<?php
$rootDir = $_SERVER['DOCUMENT_ROOT']; // 웹 문서 루트 디렉토리
$dirlist = glob($rootDir.'/*',GLOB_ONLYDIR); // 해당 디렉토리만
$filelist = glob($rootDir.'/*'); // 해당 디렉토리에서 모든파일
echo count($dirlist);
echo count($filelist);
?>