我想寫一個網頁,會遍歷一個指定的目錄....並獲得在該目錄中的所有文件...PHP - 代碼遍歷目錄,並獲得所有文件(影像)
在我的情況下,該目錄將只包含圖像,並與他們的鏈接顯示圖片...
像這樣
怎麼辦呢
p.s.該目錄將不會被用戶輸入..它將始終是相同的目錄...
我想寫一個網頁,會遍歷一個指定的目錄....並獲得在該目錄中的所有文件...PHP - 代碼遍歷目錄,並獲得所有文件(影像)
在我的情況下,該目錄將只包含圖像,並與他們的鏈接顯示圖片...
像這樣
怎麼辦呢
p.s.該目錄將不會被用戶輸入..它將始終是相同的目錄...
/**
* function get files
* @param $path string = path to fine files in
* @param $accept array = array of extensions to accept
* @param currentLevel = 0, stopLevel = 0
* @return array of madmanFile objects, but you can modify it to
* return whatever suits your needs.
*/
public static function getFiles($path = '.', $accept, $currentLevel = 0, $stopLevel = 0){
$path = trim($path); //trim whitespcae if any
if(substr($path,-1)=='/'){$path = substr($path,0,-1);} //cutoff the last "/" on path if provided
$selectedFiles = array();
try{
//ignore these files/folders
$ignoreRegexp = "/\.(T|t)rash/";
$ignore = array('cgi-bin', '.', '..', '.svn');
$dh = @opendir($path);
//Loop through the directory
while(false !== ($file = readdir($dh))){
// Check that this file is not to be ignored
if(!in_array($file, $ignore) and !preg_match($ignoreRegexp,$file)){
$spaces = str_repeat(' ', ($currentLevel * 4));
// Its a directory, so we need to keep reading down...
if(is_dir("$path/$file")){
//merge current selectFiles array with recursion return which is
//another array of selectedFiles
$selectedFiles = array_merge($selectedFiles,MadmanFileManager::getFiles("$path/$file", $accept, ($currentLe$
} else{
$info = pathinfo($file);
if(in_array($info['extension'], $accept)){
$selectedFiles[] = new MadmanFile($info['filename'], $info['extension'], MadmanFileManager::getSize($
}//end if in array
}//end if/else is_dir
}
}//end while
closedir($dh);
// Close the directory handle
}catch (Exception $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
return $selectedFiles;
}
您將要使用scandir函數來遍歷目錄中的文件列表。
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
closedir($handle);
}
使用readdir
+1,爲答案。 – 2013-09-21 08:19:06
$dir = "/etc/php5/";
//打開一個已知的目錄,並繼續閱讀其內容
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
你可以像其他人建議檢查目錄中的每個文件,或者你可以使用glob來識別基於擴展名的文件。
我用線沿線的東西:
if ($dir = dir('images'))
{
while(false !== ($file = $dir->read()))
{
if (!is_dir($file) && $file !== '.' && $file !== '..' && (substr($file, -3) === 'jpg' || substr($file, -3) === 'png' || substr($file, -3) === 'gif'))
{
// do stuff with the images
}
}
}
else { echo "Could not open directory"; }
你也可以嘗試glob功能:
$path = '/your/path/';
$pattern = '*.{gif,jpg,jpeg,png}';
$images = glob($path . $pattern, GLOB_BRACE);
print_r($images);
嗨,你可以使用DirectoryIterator
try {
$dir = './';
/* @var $Item DirectoryIterator */
foreach (new DirectoryIterator($dir) as $Item) {
if($Item->isFile()) {
echo $Item->getFilename() . "\n";
}
}
} catch (Exception $e) {
echo 'No files Found!<br />';
}
如果你想遞歸地傳遞目錄: http://php.net/manual/en/class.recursivedirectoryiterator.php
<?php
//define directory
$dir = "images/";
//open directory
if ($opendir = opendir($dir)){
//read directory
while(($file = readdir($opendir))!= FALSE){
if($file!="." && $file!= ".."){
echo "<img src='$dir/$file' width='80' height='90'><br />";
}
}
}
?>
來源:
function recurseDir ($dir) {
// open the provided directory
if ($handle = opendir($_SERVER['DOCUMENT_ROOT'].$dir)) {
// we dont want the directory we are in or the parent directory
if ($entry !== "." && $entry !== "..") {
// recursively call the function, if we find a directory
if (is_dir($_SERVER['DOCUMENT_ROOT'].$dir.$entry)) {
recurseDir($dir.$entry);
}
else {
// else we dont find a directory, in which case we have a file
// now we can output anything we want here for each file
// in your case we want to output all the images with the path under it
echo "<img src='".$dir.$entry."'>";
echo "<div><a href='".$dir.$entry."'>".$dir.$entry."</a></div>";
}
}
}
}
的$ DIR PARAM需要在以下格式: 「/路徑/」 phpacademy.org
我將通過創建一個遞歸函數開始或「/ path/to/files /」
基本上,只是不包括服務器根,因爲我已經在下面使用$ _SERVER ['DOCUMENT_ROOT 「]。
因此,最後只需調用我們剛剛在代碼中創建的recurseDir函數一次,它將遍歷任何子文件夾並將圖像與其下的鏈接一起輸出。
可能的[從文件夾加載圖像列表](http://stackoverflow.com/questions/758594/load-list-of-image-from-folder)和[更多](http:// stackoverflow .com/search?q = get + all + images + in + a + folder + php) – Gordon 2010-08-31 11:06:37
*(相關)* http://stackoverflow.com/questions/3563863/read-files-in-folder/3564311#3564311 – Gordon 2010-08-31 11:50:13