0

我刚刚观看了有关显示目录中图像的这些视频,并希望在修改代码方面得到一些帮助。

http://www.youtube.com/watch?v=dHq1MNnhSzU - 第 1 部分

http://www.youtube.com/watch?v=aL-tOG8zGcQ -第 2 部分

视频显示的几乎正是我想要的,但我想到的系统是用于照片画廊的。

我计划有一个名为画廊的文件夹,其中将包含其他文件夹,每个文件夹用于每个不同的照片集,即

  • 画廊
    • 专辑 1
    • 专辑 2

我需要一些帮助来修改代码,以便它可以识别和仅显示一页上的目录。这样,我可以将这些目录转换为链接,将您带到相册本身,并使用原始代码从那里提取图像。

对于那些想要视频代码的人,这里是

$dir = 'galleries';
$file_display = array('bmp', 'gif', 'jpg', 'jpeg', 'png');

if (file_exists($dir) == false) {
echo 'Directory \'', $dir , '\' not found!';
} else {
$dir_contents = scandir($dir);

foreach ($dir_contents as $file) {
    $file_type = strtolower(end(explode('.', $file)));

    if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
        echo '<img src="', $dir, '/', $file, '" alt="', $file, '" />';
    }
}
}
4

2 回答 2

0

您需要使用这样的函数来列出所有目录:

function getDirectory( $path = '.', $level = 0 ){ 

$ignore = array( 'cgi-bin', '.', '..' ); 
// Directories to ignore when listing output. Many hosts 
// will deny PHP access to the cgi-bin. 

$dh = @opendir( $path ); 
// Open the directory to the handle $dh 

while( false !== ( $file = readdir( $dh ) ) ){ 
// Loop through the directory 

    if( !in_array( $file, $ignore ) ){ 
    // Check that this file is not to be ignored 

        $spaces = str_repeat( '&nbsp;', ( $level * 4 ) ); 
        // Just to add spacing to the list, to better 
        // show the directory tree. 

        if( is_dir( "$path/$file" ) ){ 
        // Its a directory, so we need to keep reading down... 

            echo "<strong>$spaces $file</strong><br />"; 
            getDirectory( "$path/$file", ($level+1) ); 
            // Re-call this same function but on a new directory. 
            // this is what makes function recursive. 

        } else { 

            echo "$spaces $file<br />"; 
            // Just print out the filename 

        } 

    } 

} 

closedir( $dh ); 
// Close the directory handle 

}

然后,将用户选择的目录作为 $dir 变量传递给您当前拥有的函数。

于 2013-02-05T18:23:38.660 回答
0

我现在无法测试任何代码,但很想在这里看到一个解决方案:

$directory = new RecursiveDirectoryIterator('path/galleries');
$iterator = new RecursiveIteratorIterator($directory);
$regex = new RegexIterator($iterator, '/^.+\.(bmp|gif|jpg|jpeg|png)$/i', RecursiveRegexIterator::GET_MATCH);                

SPL 功能强大,应该更多地使用。

RecursiveDirectoryIterator提供了一个用于递归地遍历文件系统目录的接口 。http://www.php.net/manual/en/class.recursivedirectoryiterator.php

于 2013-02-05T18:28:29.563 回答