一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php遍歷目錄與文件夾的多種方法詳解

php遍歷目錄與文件夾的多種方法詳解

2020-05-29 15:02服務器之家 PHP教程

介紹幾個php遍歷目錄的方法,可以遍歷目錄及目錄中的文件,供大家參考

遍歷目錄或遍歷目錄下指定類型的文件,這是每一個童鞋在寫程序的時候難免會用到的。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.'/'.$afile.'<br />';
}
}
} //簡單的demo,列出當前目錄下所有的文件
getfiles(__DIR__);


scandir() 是返回指定目錄下所有的文件和目錄組成的數組,在PHP中,還提供了一個灰常強大的函數glob(),glob()有2個參數,至于第2個參數是可選的,稍后再講。 直接來看,用glob()怎么遍歷目錄的。
可以看出,glob()返回的內容中已經過濾掉了'.'和'..',其中*表示遍歷目錄下所有文件。相應的,如果改為*.txt,則會遍歷目錄下所的txt文件。是不是很方便呢?它的方便之處可不止這一點,據元芳說,這里面還藏著一個天大的秘密,是什么呢?以后再說,有興趣的話,可以給我留言交流。

復制代碼 代碼如下:

function getfiles($path){
foreach(glob($path) as $afile){
if(is_dir($afile))
{ getfiles($afile.'/*'); } else { echo $afile.'<br />'; }
}
} //簡單的demo,列出當前目錄下所有的文件
getfiles(__DIR__);0


既然說用 *.txt,就會遍歷目錄下所的txt文件,那如果我想讓它同時遍歷某幾種格式的文件呢?怎么辦?肯定有童鞋想到用數組了,然后很快的寫出來替換進去{*.txt,*.jpg,*.zip,...},當然也很快地發現,程序返回false,什么都得不到。不要失望,這涉及到了剛才所說的第2個可選參數,這個參數是用來改變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 = '.') {
                $current_dir = opendir($path);    //opendir()返回一個目錄句柄,失敗返回false
                while(($file = readdir($current_dir)) !== false) {    //readdir()返回打開目錄句柄中的一個條目
                    $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //構建子目錄路徑
                    if($file == '.' || $file == '..') {
                        continue;
                    } else if(is_dir($sub_dir)) {    //如果是目錄,進行遞歸
                        echo 'Directory ' . $file . ':<br>';
                        traverse($sub_dir);
                    } else {    //如果是文件,直接輸出
                        echo 'File in Directory ' . $path . ': ' . $file . '<br>';
                    }
                }
            }

            traverse('xxtt');
        ?>
    </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.','; //輸出文件名
$file=explode(',',$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>");
print_r($array_file);
print_r("</pre>");
?>

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本伊人色综合网 | 日本人成大片在线 | 日b在线观看| 国内激情自拍 | 日韩精品一区二区三区中文在线 | 欧美色图亚洲天堂 | 欧美一区二区三区四区视频 | 12一14性水蜜桃 | 精品夜夜澡人妻无码AV蜜桃 | 999久久免费高清热精品 | 99re免费在线视频 | 欧美亚洲视频在线观看 | 亚洲精品视 | 国产午夜成人无码免费看 | 96免费精品视频在线 | 国产一区二区三区在线看片 | 门卫老张和女警花小说 | 草莓在深夜释放自己软件 | 香蕉免费看一区二区三区 | 白发在线视频播放观看免费 | 免费看男人狂躁女人 | 欧美一级专区免费大片俄罗斯 | 国产精品吹潮香蕉在线观看 | 乌克兰一级片 | 欧美高清免费一级在线 | 国产综合色在线视频区色吧图片 | 不知火舞被c视频在线播放 不卡一区二区三区卡 | 唯美 清纯 另类 亚洲制服 | 色哟哟观看 | 日韩无砖2021特黄 | 耽美肉文高h | 男人天堂视频网 | 动漫jk美女被爆羞羞漫画 | 无遮挡免费h肉动漫在线观看 | 4hu四虎永久网址 | 青青草一区二区免费精品 | 国产东北三老头伦一肥婆 | 国产新疆成人a一片在线观看 | 深夜激情网 | 女色在线观看免费视频 | 国产欧美日韩成人 |