>  기사  >  백엔드 개발  >  PHP에서 디렉터리와 폴더를 탐색하는 여러 가지 방법 소개

PHP에서 디렉터리와 폴더를 탐색하는 여러 가지 방법 소개

伊谢尔伦
伊谢尔伦원래의
2017-07-08 11:47:031927검색

디렉토리와 디렉터리 안의 파일을 순회할 수 있는 여러 가지 php디렉터리 탐색메소드를 소개합니다.

디렉토리를 탐색하거나 디렉토리에 있는 지정된 유형의 파일을 탐색하는 것이 모든 어린이가 프로그램을 작성할 때 필연적으로 사용하게 될 것입니다. PHP 자체도 매우 유용한 기능을 많이 제공합니다. 올바르게 사용하면 문제가 발생하지 않습니다.
이 함수는 지정된 디렉터리(하위 디렉터리 포함)에 있는 모든 파일을 나열할 수 있습니다.

코드는 다음과 같습니다.

function getfiles($path){ 
foreach
(scandir($path) as $afile)
{
if($afile=='.'||$afile=='..') 
continue; 
if(is_dir($path.'/'.$afile)) 
{ 
getfiles($path.'/'.$afile); 
} else { 
echo $path.&#39;/&#39;.$afile.&#39;<br />&#39;; 
} 
} 
} //简单的demo,列出当前目录下所有的文件
getfiles(DIR);

scandir()는 지정된 디렉터리에 있는 모든 파일과 디렉터리의 배열을 반환합니다. 매우 강력한 함수 glob(). glob()에는 2개의 매개변수가 있으며 두 번째 매개변수는 선택사항이며 나중에 설명합니다. glob()을 사용하여 디렉터리를 탐색하는 방법을 직접 살펴보겠습니다.
'.' 및 '..'이 glob()에 의해 반환된 콘텐츠에서 필터링되었음을 알 수 있습니다. 여기서 *는 디렉터리의 모든 파일을 탐색한다는 의미입니다. 이에 따라 *.txt로 변경되면 해당 디렉터리의 모든 txt 파일이 탐색됩니다. 매우 편리하지 않나요? 그 편리함은 이것에만 국한되지 않습니다. Yuan Fang에 따르면 여기에는 엄청난 비밀이 숨겨져 있습니다. 나중에 이야기하겠습니다. 관심이 있으시면 메시지를 남겨주세요.

코드는 다음과 같습니다.

function getfiles($path){ 
foreach(glob($path) as $afile){ 
if(is_dir($afile)) 
{ getfiles($afile.&#39;/*&#39;); } else { echo $afile.&#39;<br />&#39;; } 
} 
} //简单的demo,列出当前目录下所有的文件
getfiles(DIR);0


*.txt를 사용하면 디렉터리의 모든 txt 파일을 탐색하므로 특정 형식의 파일을 동시에 탐색하려면 어떻게 해야 할까요? 무엇을 해야 할까요? 어떤 어린이는 배열 사용을 생각한 다음 재빨리 작성하여 {*.txt,*.jpg,*.zip,...}으로 바꾸었습니다. 물론 프로그램이 false를 반환한다는 사실도 빨리 발견했습니다. 그리고 아무것도 얻지 못했습니다. 실망하지 마세요. 여기에는 방금 언급한 두 번째 선택적 매개변수가 포함됩니다. 이 매개변수는 glob의 동작을 변경하는 데 사용됩니다. 자세한 내용은 PHP 매뉴얼을 참조하세요. GLOB_BRACE는 'a', 'b' 또는 'c',...}와 일치하도록 {a,b,c,...}를 확장하는 데 사용됩니다. 사용법은 다음과 같습니다: foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}
완전한 내용은 다음과 같습니다. 디렉토리에 있는 모든 파일 탐색 지정된 파일 유형 기능의 다음 예를 볼 수 있습니다.

폴더 및 하위 폴더

에 있는 모든 파일을 탐색합니다. 코드는 다음과 같습니다.

<html>
    <body>
        <?php
            function traverse($path = &#39;.&#39;) {
                $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
                while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目
                    $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
                    if($file == &#39;.&#39; || $file == &#39;..&#39;) {
                        continue;
                    } else if(is_dir($sub_dir)) {    //如果是目录,进行递归
                        echo &#39;Directory &#39; . $file . &#39;:<br>&#39;;
                        traverse($sub_dir);
                    } else {    //如果是文件,直接输出
                        echo &#39;File in Directory &#39; . $path . &#39;: &#39; . $file . &#39;<br>&#39;;
                    }
                }
            }
            traverse(&#39;xxtt&#39;);
        ?>
    </body>
</html>

일반적으로 사용되는 몇 가지 예

코드는 다음과 같습니다.

<?php
$dir="E:/video"; //这里输入其它路径
//PHP遍历文件夹下所有文件
$handle=opendir($dir."."); 
echo "文件:<br>";
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
echo $file; //输出文件名
}
}
closedir($handle); 
?>

이 단락을 사용하세요. 코드는 모든 파일을 반복하고 모든 파일 이름을 배열로 저장합니다.

코드는 다음과 같습니다.

<?php
$s=explode("/n",trim(`dir/b e://video`));
print_r($s);
?>
<?php 
$dir="E:/video"; //这里输入其它路径 
//PHP遍历文件夹下所有文件 
$handle=opendir($dir."."); 
echo "文件:<br>"; 
while (false !== ($file = readdir($handle))) 
{ 
if ($file != "." && $file != "..") { 
$file=$file.&#39;,&#39;; //输出文件名 
$file=explode(&#39;,&#39;,$file);
} 
} 
print_r($file);//输出的就是数组了
closedir($handle); 
?>
<?php 
$dir="."; //这里输入其它路径 
//PHP遍历文件夹下所有文件 
$handle=opendir($dir."."); 
echo "文件:<br>"; 
//定义用于存储文件名的数组
$array_file = array();
while (false !== ($file = readdir($handle))) 
{ 
if ($file != "." && $file != "..") { 
$array_file[] = $file; //输出文件名 
} 
} 
closedir($handle);
print_r("<pre class="brush:php;toolbar:false">");
print_r($array_file);
print_r("
"); ?>


위 내용은 PHP에서 디렉터리와 폴더를 탐색하는 여러 가지 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.