폴더의 모든 파일을 탐색합니다. 일반적으로 opendir 및 readdir 메소드를 사용하여 탐색할 수 있습니다.
예: 지정된 디렉터리에서 모든 PHP 파일 찾기(하위 폴더 검색 안 함), 코드는 다음과 같습니다.
<code><span><span><?php</span><span>$path</span> = dirname(<span>__FILE__</span>); <span>$result</span> = traversing(<span>$path</span>); print_r(<span>$result</span>); <span><span>function</span><span>traversing</span><span>(<span>$path</span>)</span>{</span><span>$result</span> = <span>array</span>(); <span>if</span>(<span>$handle</span> = opendir(<span>$path</span>)){ <span>while</span>(<span>$file</span>=readdir(<span>$handle</span>)){ <span>if</span>(<span>$file</span>!=<span>'.'</span> && <span>$file</span>!=<span>'..'</span>){ <span>if</span>(strtolower(substr(<span>$file</span>, -<span>4</span>))==<span>'.php'</span>){ array_push(<span>$result</span>, <span>$file</span>); } } } } <span>return</span><span>$result</span>; } <span>?></span></span></code>
사용하는 경우glob 메소드는
<code><span><span><?php</span><span>$path</span> = dirname(<span>__FILE__</span>); <span>$result</span> = glob(<span>$path</span>.<span>'/*.php'</span>); print_r(<span>$result</span>); <span>?></span></span></code>
을 순회하여 코드를 단순화할 수 있습니다. glob은 path 검색 결과의 경로를 반환합니다(예: path='/). home/ fdipzone', 위의 예는
<code><span>Array</span> ( [<span>0</span>] => <span>/home/</span>fdipzone/a.php [<span>1</span>] => <span>/home/</span>fdipzone/b.php [<span>2</span>] => <span>/home/</span>fdipzone/c.php )</code>
을 반환합니다. 이는 opendir 및 readdir이 반환한 결과와 다릅니다.
현재 디렉터리를 순회하는 경우. 다음과 같이 변경할 수 있습니다: glob('*.php');
glob 구문 설명:
<code>array <span>glob</span> ( string <span>$pattern</span> [, <span>int</span><span>$flags</span> = <span>0</span> ] )</code>
glob() 이 함수는 일반 쉘에서 사용하는 규칙과 유사하게 libc glob() 함수에서 사용하는 규칙에 따라 pattern과 일치하는 모든 파일 경로를 검색합니다. 약어 확장이나 매개변수 대체는 수행되지 않습니다. Glob은 일반 경로 일치를 사용하는 데 강력합니다.
플래그 유효한 플래그는 다음과 같습니다.
GLOB_MARK - 반환된 각 항목에 슬래시를 추가합니다.
GLOB_NOSORT - 디렉터리에 나타나는 파일을 따릅니다. 원래 순서(정렬되지 않음)
GLOB_NOCHECK - 일치하는 파일이 없는 경우 검색에 사용되는 패턴을 반환합니다.
GLOB_NOESCAPE - 백슬래시 이스케이프 처리되지 않은 메타 문자
GLOB_BRACE - 'a', 'b' 또는 'c'와 일치하도록 {a,b,c}를 확장합니다.
GLOB_ONLYDIR -
GLOB_ERR - 오류 정보(예: 읽을 수 없는 디렉터리)를 중지하고 읽고, 기본적으로 모든 오류를 무시합니다.
<code><span><span><?php</span><span>$path</span> = dirname(<span>__FILE__</span>); <span>$result</span> = <span>array</span>(); traversing(<span>$path</span>, <span>$result</span>); print_r(<span>$result</span>); <span><span>function</span><span>traversing</span><span>(<span>$path</span>, &<span>$result</span>)</span>{</span><span>$curr</span> = glob(<span>$path</span>.<span>'/*'</span>); <span>if</span>(<span>$curr</span>){ <span>foreach</span>(<span>$curr</span><span>as</span><span>$f</span>){ <span>if</span>(is_dir(<span>$f</span>)){ array_push(<span>$result</span>, <span>$f</span>); traversing(<span>$f</span>, <span>$result</span>); }<span>elseif</span>(strtolower(substr(<span>$f</span>, -<span>4</span>))==<span>'.php'</span>){ array_push(<span>$result</span>, <span>$f</span>); } } } } <span>?></span></span></code>