24'C 구름 많음
서울 강남구
PHP에서 폴더 경로를 검색하려할때 glob 함수를 쓸 수 있습니다.
예를 들어, 아래와 같이 사용시
$files = glob("path/to/file/*");//['path/to/file/1.txt','path/to/file/2.txt','path/to/file/3.txt']
- path
- to
- file
- 1.txt
- 2.txt
- 3.txt
위와 같은 문서 경로가 있을때 아래 내용을 배열로 반환합니다.
path/to/file/1.txt
path/to/file/2.txt
path/to/file/3.txt
그런데 [ ] { } 같은 대괄호,중괄호 기호가 포함되어있다면 검색이 안되고 빈 배열이 반환되는 경우가 있습니다.
$files = glob("path/to/[file]/*"); // []
[ ] { } 를 이스캐이프 해줘야 사용이 가능한데 윈도우에서는 아래와 같이 이용가능합니다.
$path = preg_replace('~[[?{]~','[$0]',$path);
$files = glob($path.'/*');
최종 변환 결과
$files = glob("path/to/[file]/*"); // []
$files = glob("path/to/[[]file]/*");
//['path/to/[file]/1.txt','path/to/[file]/2.txt','path/to/[file]/3.txt']
$files = glob("path/to/{file}/*"); // []
$files = glob("path/to/[{]file}/*");
//['path/to/{file}/1.txt','path/to/{file}/2.txt','path/to/{file}/3.txt']
조금 특이하게 변환을 하는데 윈도우 기반 PHP에서는 이렇게 변환을 한다.
Linux/Unix 에서는 \를 폴더 기호로 안쓰기 때문에 \로 간단히 치환가능합니다.
$files = glob("path/to/[file]/*"); // []
$files = glob("path/to/[file]/*");
//['path/to/[file]/1.txt','path/to/[file]/2.txt','path/to/[file]/3.txt']
$files = glob("path/to/{file}/*"); // []
$files = glob("path/to/{file}/*");
//['path/to/{file}/1.txt','path/to/{file}/2.txt','path/to/{file}/3.txt']