您好,登錄后才能下訂單哦!
PHP中怎樣獲取目錄中的文件名,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
我們來看一下PHP中怎樣去獲取目錄下的文件相關(guān)知識。
我們已經(jīng)了解了在PHP中怎樣去打開和關(guān)閉目錄,在關(guān)閉目錄之前會對目錄進(jìn)行操作,其中常用到的操作就有獲取目錄中的文件和文件夾。
也就是說,想要了解怎樣去獲取目錄中的文件的話,首先還是得會打開和關(guān)閉目錄,因此opendir()
函數(shù)和closedir()
函數(shù)還不了解的可以點(diǎn)擊上方的連接進(jìn)行學(xué)習(xí)。下面我們就來看一下PHP中怎樣才能完成目錄下文件的獲取吧。
我們在PHP中可以通過readdir()
函數(shù)和scandir()
函數(shù)來完成獲取目錄中文件名的操作。
readdir()
函數(shù)獲取文件中的下一個文件名
readdir()
函數(shù)是一個簡單的操作,說它簡單是因?yàn)楫?dāng)函數(shù)執(zhí)行成功之后,它能夠返回通過opendir()
函數(shù)打開目錄中的一個文件或者目錄名稱;如果函數(shù)沒有執(zhí)行成功,返回的結(jié)果就是flase
。
readdir()函數(shù)的基本語法格式如下:
readdir([resource $dir_handle])
其中需要注意的是:$dir_handle
是個可選參數(shù),當(dāng)填寫時(shí),表示的就是通過opendir()
函數(shù)打開的目錄參數(shù)。
接下來我們通過示例來看一下readdir()函數(shù)的使用,示例如下:
<?php $dir = 'D:'; if(is_dir($dir)){ $info = opendir($dir); $file = readdir($info); echo $file.'<br>'; closedir($info); } ?>
輸出結(jié)果:
上述示例中這種寫法一般是不會用到的,一般想要通過readdir()函數(shù)獲取所有的目錄下的文件,需要通過while
循環(huán)來進(jìn)行獲取,示例如下:
<?php $dir = 'D:'; if(is_dir($dir)){ $info = opendir($dir); while (($file = readdir($info)) !== false) { echo $file.'<br>'; } closedir($info); } ?>
輸出結(jié)果:
如此我們便通過readdir()函數(shù)與while循環(huán)配合完成了對目標(biāo)目錄中文件名的獲取。這就是readdir()函數(shù)的應(yīng)用,接下來我們看一下另外一種方法,也就是scandir()
函數(shù)。
scandir()
函數(shù),數(shù)組形式返回目錄文件名
上文中我們了解了readdir()
函數(shù)可以獲取目標(biāo)目錄內(nèi)的文件名,其中配合while循環(huán)可以簡單直接的得到目錄下的文件或者目錄名。接下來要說的scandir()函數(shù)與readdir()函數(shù)有一些不同。
readdir()
函數(shù)一次只能返回一個文件名,但是scandir()
函數(shù)執(zhí)行成功之后能夠返回目標(biāo)目錄內(nèi)所有的文件名和目錄名;
readdir
返回的結(jié)果直接就是文件的名稱,scandir
的返回結(jié)果也是文件的名稱但是是以數(shù)組的形式返回的結(jié)果;
readdir
函數(shù)沒有執(zhí)行成功的話返回的結(jié)果是flase,scandir
函數(shù)沒有執(zhí)行成功時(shí)返回的加過也是flase但是同時(shí)也會有錯誤信息。
下面我們來看一下scandir()函數(shù)的基本語法,示例如下:
scandir(string $directory[, int $sorting_order[, resource $context]])
其中需要注意的是:$directory
表示要讀取的目錄;當(dāng)$sorting_order
的參數(shù)設(shè)置為SCANDIR_SORT_DESCENDING
或者 1
的時(shí)候,返回的結(jié)果也就是文件名,它們的排列順序是按著字母降序排列。當(dāng)$sorting_order的參數(shù)設(shè)置為SCANDIR_SORT_NONE
的時(shí)候,返回的結(jié)果就是未排列的結(jié)果,其中這個參數(shù)是個可選參數(shù)。
接下來我們通過示例來看一下scandir()函數(shù)的應(yīng)用,示例如下:
<?php $dir = 'D:\phpstudy_pro\WWW'; if(is_dir($dir)){ $arr1 = scandir($dir); $arr2 = scandir($dir, 1); } echo "<pre>"; print_r($arr1); print_r($arr2); ?>
上述示例中,目的是想要通過scandir()函數(shù)來獲取目錄路徑為“D:\phpstudy_pro\WWW”的目錄內(nèi)文件名,然后通過不同的參數(shù)來實(shí)現(xiàn)不同的字母順序排列,輸出結(jié)果如下:
通過上述示例就能夠看出scandir()函數(shù)能夠通過數(shù)組的形式返回目標(biāo)目錄中的文件名,并且函數(shù)內(nèi)$sorting_order的參數(shù)不同返回結(jié)果的排序也就不同。
看完上述內(nèi)容,你們掌握PHP中怎樣獲取目錄中的文件名的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。