> 백엔드 개발 > PHP 튜토리얼 > PHP 마스터 | PHP와 함께 파일 및 디렉토리를 나열합니다

PHP 마스터 | PHP와 함께 파일 및 디렉토리를 나열합니다

Joseph Gordon-Levitt
풀어 주다: 2025-02-25 18:23:17
원래의
196명이 탐색했습니다.

PHP Master | List Files and Directories with PHP 이 기사에서는 PHP 애플리케이션 개발의 일반적인 작업 : 파일 및 디렉토리 나열에 대해 설명합니다. 우리는 몇 가지 기본 및 고급 솔루션을 소개하고 장단점을 분석 할 것입니다. 먼저 기본 PHP 기능을 사용하는 세 가지 방법을 소개 한 다음 점차 강력한 SPL ITERATOR를 활용하는 방법으로 전환합니다. 논의를 위해, 우리는 디렉토리 구조가 다음과 같다고 가정합니다.

키 포인트

<code>---manager
|
---user
|   ---document.txt
|   ---data.dat
|   ---style.css
|---article.txt
|---master.dat
|---script.php
|---test.dat
|---text.txt</code>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
PHP는 , ,

, ,

및 를 포함하여 파일 및 디렉토리를 나열하기위한 여러 기능을 제공합니다. 이러한 기능의 유연성은 다양하며 일부는 필터링이 필요합니다.
    표준 PHP 라이브러리 (SPL)는 , 및 를 포함한 파일 및 디렉토리를 나열하기위한 객체 지향 솔루션을 제공합니다. 이러한 반복자는 특정 요구를보다 잘 충족시키기 위해 확장 될 수 있습니다.
  • 기능은 필터링을 허용하지만 유연성이 부족한 한 줄 솔루션입니다. 대신, , glob()opendir()는 더 큰 유연성을 제공하지만 더 많은 장황한 코드와 사후 필터링이 필요합니다. readdir() 함수는 또한 사후 필터링이 필요하지만 파일 핸들을 관리 할 필요는 없습니다. 객체 지향 방법의 경우 SPL 라이브러리를 사용해야합니다. 는 사전 필터링을 허용하지만 다른 반복자는 closedir()를 사용하여 동일한 기능을 달성 할 수 있습니다. scandir()
  • 기본 솔루션 첫 번째 방법 세트는
  • 함수의 사용, , FilesystemIterator 함수의 조합 및 함수의 사용을 보여줍니다. RecursiveDirectoryIterator GlobIterator usage
  • 논의 될 첫 번째 기능은
  • 로서 가장 유명한 쉘과 유사한 와일드 카드를 사용하여 경로 이름을 검색 할 수 있습니다. 이 함수에는 두 가지 매개 변수가 있습니다 : glob() opendir() (필수) : 검색 모드 readdir() (선택 사항) : 공식 문서에 나열된 하나 이상 closedir() 몇 가지 예를 보자! 디렉토리에서
  • 로 끝나는 모든 파일 및 디렉토리를 검색하려면 다음을 작성할 수 있습니다.
  • 를 표시하면 scandir()가 표시되면 출력은 다음과 같습니다 GlobIterator "TE"로 시작하는 파일 및 디렉토리 목록을 원한다면 작성하려는 코드는 다음과 같습니다. RegexIterator 출력은 다음과 같습니다
  • "MA"를 포함하는 디렉토리 목록 만 얻으려면 코드는 다음과 같습니다.
이 마지막 예제에서 출력은 다음과 같습니다
<code>---manager
|
---user
|   ---document.txt
|   ---data.dat
|   ---style.css
|---article.txt
|---master.dat
|---script.php
|---test.dat
|---text.txt</code>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
마지막 예제는

상수를 선택적 두 번째 매개 변수로 사용합니다. 보시다시피, GLOB_ONLYDIR라는 파일은 제외됩니다. 기능은 사용하기 쉽지만 경우에 따라 유연하지 않습니다. 예를 들어, 주어진 패턴 (디렉토리가 아닌)과 일치하는 파일 만 검색하는 플래그가 없습니다. master.dat glob() 사용 및

논의하려는 파일과 디렉토리를 읽는 두 번째 방법은 opendir(), readdir() 및 기능과 관련이 있습니다. 디렉토리를 열고 연결 핸들로 돌아갑니다. 핸들을 검색 한 후

를 사용할 수 있습니다. 이 함수가 호출 될 때마다 열린 디렉토리의 다음 파일 또는 디렉토리의 이름을 제공합니다. 모든 이름을 검색 한 후에는 함수가 를 리턴합니다. 핸들을 닫으려면 opendir()를 사용할 수 있습니다. 와 달리,이 접근법은 반환 된 파일과 디렉토리를 필터링하는 데 도움이되는 매개 변수가 없기 때문에 조금 더 복잡합니다. 당신은 당신이 원하는 것을 얻으려면 포스트 필터링을해야합니다. 함수와 평행을 달기 위해, 다음 예제는 "TE"로 시작하는 모든 파일 및 디렉토리의 목록을 검색합니다. readdir() 출력은 이전 예제와 동일합니다. 그러나 위의 코드를 실행하고 런타임에 closedir()의 값을 출력하면 때때로 이상한 항목이 포함되어 있습니다. 파일 시스템의 각 디렉토리에서 찾을 수있는 두 가지 가상 디렉토리입니다. 그들은 각각 현재 디렉토리와 부모 디렉토리 (이전 폴더)를 나타냅니다. 두 번째 예제는 주어진 경로에 포함 된 파일 만 검색하는 방법을 보여줍니다. opendir() readdir() 위의 코드를 사용하면 다음과 같은 출력이 생성됩니다. false closedir() usage glob() 마지막으로, glob() 기능을 소개하고 싶습니다. 필수 매개 변수는 하나뿐입니다 : 읽을 경로. 리턴 값은 경로에 포함 된 다양한 파일 및 디렉토리 배열입니다. 마지막 솔루션과 마찬가지로 파일 및 디렉토리의 하위 집합을 검색하려면 사후 필터를 직접 수행해야합니다. 반면, 아래 코드에서 볼 수 있듯이이 솔루션은 더 간단하고 파일 핸들을 관리 할 필요가 없습니다. 이 예제는 문자열 "TE"로 시작하는 파일 및 디렉토리를 검색하는 방법을 보여줍니다.
<code>---manager
|
---user
|   ---document.txt
|   ---data.dat
|   ---style.css
|---article.txt
|---master.dat
|---script.php
|---test.dat
|---text.txt</code>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
spl iterator 를 사용해 봅시다 이제 일부 SPL 반복자에 대해 이야기합시다. 그러나 우리가 그들의 사용을 위해 다이빙하기 전에, 나는 그것들과 SPL 라이브러리를 소개하겠습니다. SPL은 다양한 객체 지향 데이터 구조, 반복자, 파일 처리기 및 기타 클래스를 제공합니다. 장점 중 하나는 반복자가 클래스이므로 필요에 더 잘 맞도록 확장 할 수 있다는 것입니다. 또 다른 장점은 그들이 직면 할 수있는 많은 일반적인 작업을 도울 수있는 매우 유용한 기본 방법을 가지고 있으며 한 곳에서만 찾을 수 있다는 것입니다. 예를 들어, in 를 사용하면 둘 다 루프에 사용되지만 를 사용할 때는 항목이 문자열 일 뿐이며

를 사용할 때는 관련 파일을 제공 할 수있는 것이 있습니다. 또는 디렉토리에는 많은 양의 정보 (크기, 소유자, 권한 등)가 있습니다. 물론 PHP는 및 와 같은 함수를 사용하여 동일한 정보를 제공 할 수 있지만 PHP5는 접근 방식을 OOP로 바꿨습니다. 대체로 내 조언은 언어의 새로운 모범 사례를 여기에서 따르는 것입니다. SPL Ierators에 대한 일반적인 정보가 필요한 경우 SPL ITERATORS 사용을 확인하십시오. 소개에 언급 된 바와 같이, 나는 , readdir() 및 의 사용을 보여줄 것이다. 첫 번째는 에서 상속되고, 다른 것들은 에서 물려받습니다. 그들은 모두 동일한 생성자를 가지며 두 개의 매개 변수 만 있습니다. FilesystemIterator (필수) : 파일 시스템 프로젝트의 경로는 readdir()를 반복합니다. (선택 사항) : 공식 문서에 나열된 하나 이상 FilesystemIterator 이 반복자들 사이의 실제 차이는 주어진 경로를 탐색하는 방식입니다. filesize() fileowner() FilesystemIterator RecursiveDirectoryIterator를 사용하는 것은 매우 간단합니다. 그것이 어떻게 실용적인지 보여주기 위해 두 가지 예를 보여 드리겠습니다. 첫 번째 예에서는 문자열 "TE"로 시작하는 모든 파일과 디렉토리를 검색하는 반면 두 번째 예제는 다른 반복자 GlobIterator를 사용하여 모든 "t.dat"또는 "t. 파일 및 디렉토리를 검색합니다. PHP”. 일반 표현식에 따라 다른 반복기를 필터링하는 데 사용됩니다. DirectoryIterator FilesystemIterator 위 코드를 사용하면 결과는 이전 예제와 동일합니다. <of>를 사용하는 두 번째 예는 다음과 같습니다 이 경우 출력은 다음과 같습니다<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;code&gt;---manager | ---user | ---document.txt | ---data.dat | ---style.css |---article.txt |---master.dat |---script.php |---test.dat |---text.txt&lt;/code&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <h3> <code>RecursiveDirectoryIterator

는 파일 시스템 디렉토리를 재귀 적으로 반복하기위한 인터페이스를 제공합니다. 대상으로 인해 및

와 같은 유용한 방법이 있으며, 이는 현재 항목 (디렉토리 인 경우)과 현재 항목이 디렉토리인지 여부에 대한 반복기를 반환합니다. 및 RecursiveDirectoryIterator의 실제 적용을 보여 주려면 마지막 예제를 다시 작성하여 동일한 결과를 얻을 것입니다. getChildren() hasChildren() RecursiveDirectoryIterator getChildren()

는 함수와 유사한 방식으로 파일 시스템을 반복합니다. 따라서 첫 번째 매개 변수에는 와일드 카드가 포함될 수 있습니다. 다음 코드는
<?php $filelist = glob("*.txt");
로그인 후 복사
를 사용하는 일반적인 예를 보여줍니다.

GlobIterator

결론 <🎜 🎜> <,>이 기사에서는 동일한 목표를 달성하는 다른 방법을 설명합니다. 주어진 경로에서 파일과 디렉토리를 검색하고 필터링하는 방법. 기억해야 할 몇 가지 핵심 사항은 다음과 같습니다

GlobIterator <<> 기능은 필터링을 허용하는 한 줄 솔루션이지만 그다지 유연하지는 않습니다. glob() <🎜 GlobIterator, <🎜 🎜> 및

를 사용하는 솔루션은 약간 장황하며 필터링 후 필요하지만 더 유연합니다.
<code>array (
  0 => 'article.txt',
  1 => 'text.txt'
)</code>
로그인 후 복사

기능에는 필터링 후 필터링이 필요하지만 관리 핸들이 필요하지 않습니다.

OOP 메소드를 사용하려면 SPL 라이브러리를 사용해야합니다. 또한 필요에 맞게 수업을 확장 할 수 있습니다.

    는 사전 필터링 할 수 있지만 다른 반복자는
  • 를 사용하여 편안한 방식으로 동일한 기능을 달성 할 수 있습니다. glob()
  • 이것을 달성하는 다른 방법을 알고 있습니까? 그렇다면 우리와 공유하고 싶다면 계속하십시오. 창의적 공유는 항상 인기가 있습니다. Fotolia의 사진
  • opendir() php readdir()를 사용하는 파일 및 디렉토리 나열에 대한 FAQS (FAQ) PHP에서 파일과 디렉토리를 정렬하는 방법은 무엇입니까? closedir()
  • 는 PHP의 파일과 디렉토리를 정렬하는 데 사용될 수 있습니다. 함수를 사용하여 파일 및 디렉토리를 검색 한 후 기능을 적용하여 오름차순 순서로 배열 할 수 있습니다. 내림차순으로 정렬하려면 함수를 사용할 수 있습니다. 파일 및 디렉토리 배열을 이러한 함수의 매개 변수로 전달해야합니다. scandir() PHP에 파일 및 디렉토리를 나열 할 때 특정 파일 또는 디렉토리를 제외하는 방법은 무엇입니까?
  • 특정 파일 또는 디렉토리를 제외하려면 함수와 함께 함수를 사용할 수 있습니다. 함수는 값이 배열에 존재하는지 확인합니다. 파일 또는 디렉토리 배열을 만들어 함수를 제외하고 사용하여 배열에 파일 또는 디렉토리가 있는지 확인할 수 있습니다. 존재하면 건너 뛸 수 있습니다.
  • 파일이 아닌 PHP에서만 디렉토리를 나열하는 방법은 무엇입니까?

    파일 대신 디렉토리 만 나열하려면 함수를 사용할 수 있습니다. 이 기능은 경로가 디렉토리인지 확인합니다. 함수와 함께이를 사용하여 에 의해 반환 된 배열의 각 항목이 디렉토리인지 확인할 수 있습니다. 그렇다면 목록에 포함시킬 수 있습니다.

    PHP에 파일과 디렉토리를 재귀 적으로 나열하는 방법은 무엇입니까?

    파일과 디렉토리를 재귀 적으로 나열하려면 함수를 사용하여 파일과 디렉토리를 가져온 다음 찾은 각 디렉토리에 대해 자체 호출하는 재귀 함수를 만들 수 있습니다. 이를 통해 전체 디렉토리 트리를 통과 할 수 있습니다. is_dir() 파일을 나열 할 때 PHP에서 각 파일의 크기를 어떻게 얻습니까? scandir() 각 파일의 크기를 얻으려면 함수를 사용할 수 있습니다. 이 함수는 파일 크기를 바이트로 반환합니다. 함수와 함께이 파일을 사용하여 나열 할 때 각 파일의 크기를 얻을 수 있습니다. scandir() 파일을 나열 할 때 PHP에서 각 파일의 마지막 수정 날짜를 어떻게 얻습니까?

    각 파일의 마지막 수정 날짜를 얻으려면 함수를 사용할 수 있습니다. 이 함수는 파일의 마지막 수정 시간을 Unix 타임 스탬프로 반환합니다. 함수와 함께이를 사용하여 각 파일의 마지막 수정 날짜를 나열 할 때 얻을 수 있습니다.

    PHP에 파일을 나열 할 때 확장하여 파일을 필터링하는 방법은 무엇입니까?

    확장으로 파일을 필터링하려면 함수를 사용할 수 있습니다. 이 함수는 확장자를 포함하여 파일 경로에 대한 정보를 반환합니다. 함수와 함께 파일을 필터링하여 필터링 할 때 필터링 할 수 있습니다.

    PHP의 원격 디렉토리에 파일 및 디렉토리를 나열하는 방법은 무엇입니까? scandir() 원격 디렉토리에 파일 및 디렉토리를 나열하려면 기능을 사용할 수 있습니다. 이 함수는 FTP 서버의 지정된 디렉토리에서 파일 및 디렉토리 목록을 반환합니다. 를 사용하기 전에 및

    기능을 사용하여 FTP 연결을 설정해야합니다.

    PHP에 파일 및 디렉토리를 나열 할 때 오류를 처리하는 방법은 무엇입니까?

    파일 및 디렉토리를 나열 할 때 오류를 처리하려면

    filesize() 기능을 사용할 수 있습니다. 이러한 기능을 사용하면 오류보고 수준을 설정하고 오류가 발생할 때 호출 될 사용자 정의 오류 처리기 기능을 정의 할 수 있습니다. scandir() PHP의 Zip Archives에 파일 및 디렉토리를 나열하는 방법은 무엇입니까?

    zip 아카이브에 파일과 디렉토리를 나열하려면

    클래스를 사용할 수 있습니다. 이 클래스는 아카이브에서 파일의 내용을 검색 할 수있는

    메소드를 포함하여 Zip 아카이브를 처리하는 방법을 제공합니다.

위 내용은 PHP 마스터 | PHP와 함께 파일 및 디렉토리를 나열합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿