国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

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

2020-03-22 20:30:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
遍歷目錄或遍歷目錄下指定類(lèi)型的文件,這是每一個(gè)童鞋在寫(xiě)程序的時(shí)候難免會(huì)用到的。PHP本身也提供了很多灰常有用的函數(shù),正確地使用它們,不會(huì)有錯(cuò)滴。
下面就我個(gè)人學(xué)習(xí)過(guò)程中的一些總結(jié),希望對(duì)想學(xué)PHP的童鞋有所幫助。
本函數(shù)可以列出指定目錄下所有的文件(包括子目錄下的)
復(fù)制代碼 代碼如下:
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 /
}
}
} //簡(jiǎn)單的demo,列出當(dāng)前目錄下所有的文件
getfiles(__DIR__);

scandir() 是返回指定目錄下所有的文件和目錄組成的數(shù)組,在PHP中,還提供了一個(gè)灰常強(qiáng)大的函數(shù)glob(),glob()有2個(gè)參數(shù),至于第2個(gè)參數(shù)是可選的,稍后再講。 直接來(lái)看,用glob()怎么遍歷目錄的。
可以看出,glob()返回的內(nèi)容中已經(jīng)過(guò)濾掉了'.'和'..',其中*表示遍歷目錄下所有文件。相應(yīng)的,如果改為*.txt,則會(huì)遍歷目錄下所的txt文件。是不是很方便呢?它的方便之處可不止這一點(diǎn),據(jù)元芳說(shuō),這里面還藏著一個(gè)天大的秘密,是什么呢?以后再說(shuō),有興趣的話,可以給我留言交流。
復(fù)制代碼 代碼如下:
function getfiles($path){
foreach(glob($path) as $afile){
if(is_dir($afile))
{ getfiles($afile.'/*'); } else { echo $afile.' br / }
}
} //簡(jiǎn)單的demo,列出當(dāng)前目錄下所有的文件
getfiles(__DIR__);0

既然說(shuō)用 *.txt,就會(huì)遍歷目錄下所的txt文件,那如果我想讓它同時(shí)遍歷某幾種格式的文件呢?怎么辦?肯定有童鞋想到用數(shù)組了,然后很快的寫(xiě)出來(lái)替換進(jìn)去{*.txt,*.jpg,*.zip,...},當(dāng)然也很快地發(fā)現(xiàn),程序返回false,什么都得不到。不要失望,這涉及到了剛才所說(shuō)的第2個(gè)可選參數(shù),這個(gè)參數(shù)是用來(lái)改變glob的行為的,具體都有些什么,可以查閱PHP手冊(cè),這里不多講,只說(shuō)一個(gè)GLOB_BRACE,這是用來(lái)擴(kuò)充 {a,b,c,...} 來(lái)匹配 'a','b' 或 'c',...的。用法如下:foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}
至于完整的遍歷目錄下所有的指定文件類(lèi)型函數(shù),我們可以看下面實(shí)例遍歷文件夾及子文件夾所有文件
復(fù)制代碼 代碼如下:
html
body
?php
function traverse($path = '.') {
$current_dir = opendir($path); //opendir()返回一個(gè)目錄句柄,失敗返回false
while(($file = readdir($current_dir)) !== false) { //readdir()返回打開(kāi)目錄句柄中的一個(gè)條目
$sub_dir = $path . DIRECTORY_SEPARATOR . $file; //構(gòu)建子目錄路徑
if($file == '.' || $file == '..') {
continue;
} else if(is_dir($sub_dir)) { //如果是目錄,進(jìn)行遞歸
echo 'Directory ' . $file . ': br
traverse($sub_dir);
} else { //如果是文件,直接輸出
echo 'File in Directory ' . $path . ': ' . $file . ' br
}
}
}

traverse('xxtt');
?
/body
/html

一些常用的實(shí)例
復(fù)制代碼 代碼如下:
?php
$dir="E:/video"; //這里輸入其它路徑
//PHP遍歷文件夾下所有文件
$handle=opendir($dir.".");
echo "文件: br
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
echo $file; //輸出文件名
}
}
closedir($handle);
?

用了這段代碼遍歷所有文件,幫我把所有文件名存為一個(gè)數(shù)組。
復(fù)制代碼 代碼如下:
?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);//輸出的就是數(shù)組了
closedir($handle);
?
?php
$dir="."; //這里輸入其它路徑
//PHP遍歷文件夾下所有文件
$handle=opendir($dir.".");
echo "文件: br
//定義用于存儲(chǔ)文件名的數(shù)組
$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
?
PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鲁山县| 铅山县| 凤冈县| 祥云县| 合作市| 贵阳市| 玉林市| 二连浩特市| 什邡市| 通州区| 德兴市| 达州市| 孝昌县| 桐庐县| 辰溪县| 太仓市| 大厂| 巴彦淖尔市| 鄂托克前旗| 广州市| 肃北| 沭阳县| 宁安市| 广昌县| 定南县| 永泰县| 江山市| 曲周县| 康保县| 民勤县| 博乐市| 林芝县| 高青县| 峨眉山市| 陇川县| 策勒县| 黄龙县| 汶川县| 叶城县| 昌宁县| 临洮县|