현재 위치: > 최신 기사 목록> IS_DIR () 및 glob () 함수를 결합하여 특정 디렉토리와 일치하는 파일을 가져 오는 방법은 무엇입니까?

IS_DIR () 및 glob () 함수를 결합하여 특정 디렉토리와 일치하는 파일을 가져 오는 방법은 무엇입니까?

M66 2025-07-04

IS_DIR ()glob () 함수를 결합하여 특정 디렉토리와 일치하는 파일을 가져 오는 방법은 무엇입니까?

PHP에서 파일 및 디렉토리 조작은 매우 일반적인 요구 사항입니다. IS_DIR ()glob () 는 디렉토리의 존재를 확인하고 일치하는 파일을 찾는 데 도움이되는 두 가지 매우 유용한 기능입니다. 이 기사는이 두 기능을 결합하여 특정 디렉토리와 일치하는 파일을 얻는 방법을 소개합니다. 특정 응용 프로그램 시나리오에는 파일 확장, 파일 이름 패턴 등을 기반으로 필터링이 포함됩니다.

1. IS_DIR () 함수 소개

IS_DIR () 함수는 경로가 디렉토리인지 여부를 감지하는 데 사용됩니다. 경로가 디렉토리를 가리키면 true 를 반환합니다. 그렇지 않으면 False .

 <span><span><span class="hljs-variable">$isDirectory</span></span><span> = </span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-string">'path/to/directory'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$isDirectory</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'이것은 디렉토리입니다'</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-string">'이것은 디렉토리가 아닙니다'</span></span><span>;
}
</span></span>

2. Glob () 함수 소개

Glob () 함수는 주어진 패턴과 일치하는 경로를 찾는 데 사용됩니다. 와일드 카드를 지정하여 파일을 검색하고 일치하는 파일 경로를 반환 할 수 있습니다. 예를 들어, Glob ( '*. txt')는 모든 .txt 접미사 파일을 반환합니다.

 <span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-string">'path/to/directory/*.txt'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>);  </span><span><span class="hljs-comment">// 모든 일치를 출력하십시오 *.txt 패턴에 대한 파일 경로</span></span><span>
</span></span>

3. is_dir ()glob () 함수 결합

is_dir ()glob () 의 조합을 사용하면 지정된 디렉토리에서 특정 패턴과 일치하는 파일을 찾을 수 있으며 해당 디렉토리가있는 경우에만 검색 할 수 있습니다. 디렉토리가 존재하지 않을 때 무의미한 파일 검색을 피합니다.

예 : 특정 디렉토리에서 모든 .php 파일을 찾으십시오

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'path/to/directory'</span></span><span>;

</span><span><span class="hljs-comment">// 먼저 사용하십시오 is_dir() 디렉토리가 있는지 확인하십시오</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">$directory</span></span><span>)) {
    </span><span><span class="hljs-comment">// 디렉토리가 존재하는 경우,사용 glob() 모두 찾으십시오 .php 문서</span></span><span>
    </span><span><span class="hljs-variable">$phpFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span> . </span><span><span class="hljs-string">'/*.php'</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">$phpFiles</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"다음을 찾으십시오 PHP 문서:\n"</span></span><span>;
        </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$phpFiles</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-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-string">"아무것도 발견되지 않았습니다 .php 문서。\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-string">"지정된 디렉토리가 존재하지 않습니다。\n"</span></span><span>;
}
</span></span>

예 : 특정 디렉토리에서 test_ 로 시작하는 모든 파일 찾기

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'path/to/directory'</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">$directory</span></span><span>)) {
    </span><span><span class="hljs-variable">$testFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span> . </span><span><span class="hljs-string">'/test_*'</span></span><span>);
    
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$testFiles</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"다음을 찾으십시오以 'test_' 开头的문서:\n"</span></span><span>;
        </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$testFiles</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-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-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-string">"디렉토리가 존재하지 않습니다。\n"</span></span><span>;
}
</span></span>

4. 디렉토리에서 파일의 재귀 검색과 결합

때로는 지정된 디렉토리에서 파일을 찾아야 할뿐만 아니라 하위 디렉토리에서 재귀 적으로 검색해야합니다. 현재 IS_DIR () , glob () 및 재귀 함수를 결합 하여이 함수를 달성 할 수 있습니다.

예 : 모든 .txt 파일을 재귀 적으로 찾으십시오

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">recursiveGlob</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$dir</span></span></span><span>, </span><span><span class="hljs-variable">$pattern</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-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) {
        </span><span><span class="hljs-keyword">return</span></span><span> [];
    }

    </span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span> . </span><span><span class="hljs-string">'/'</span></span><span> . </span><span><span class="hljs-variable">$pattern</span></span><span>);
    </span><span><span class="hljs-variable">$directories</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span> . </span><span><span class="hljs-string">'/*'</span></span><span>, GLOB_ONLYDIR);

    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$directories</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span>) {
        </span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, </span><span><span class="hljs-title function_ invoke__">recursiveGlob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>, </span><span><span class="hljs-variable">$pattern</span></span><span>));  </span><span><span class="hljs-comment">// 하위 디렉토리에 대한 재귀 검색</span></span><span>
    }

    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$files</span></span><span>;
}

</span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'path/to/directory'</span></span><span>;
</span><span><span class="hljs-variable">$txtFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">recursiveGlob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>, </span><span><span class="hljs-string">'*.txt'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$txtFiles</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"다음을 찾으십시오 .txt 문서:\n"</span></span><span>;
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$txtFiles</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-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-string">"아무것도 발견되지 않았습니다 .txt 문서。\n"</span></span><span>;
}
</span></span>

5. 요약

is_dir ()glob () 함수를 결합하여 파일을 쉽게 찾아서 처리 할 수 ​​있습니다. 실제 개발 에서이 두 기능은 파일을 효과적으로 필터링하고 존재하지 않는 디렉토리에서 작동하지 않도록 도와줍니다. 간단한 조합과 재귀 처리를 통해 강력하고 유연한 파일 검색 기능을 달성 할 수 있습니다.