我试图建立一个扫描主目录的图库,并为每个子目录创建一个单独的专辑。
我的结构类似于:
-Gallery --Subdir 1 ---图片1 ---图片2 --Subdir 2 ---图片1 ---图片2
这个想法是每张专辑将由一个web-gallery
类的div组成。然后会有一个由子目录名称制作的专辑标题的标题。之后,生成每个图像的列表。这将是一个单页画廊。如果可能的话,我希望有一个变量来设置如果我有30个子目录,那么列出了多少个专辑,我的页面不会太拥挤。
到目前为止,我已经写了这篇文章,但它并没有奏效。我没有收到任何错误或日志,尽管它不起作用。
$dirs = glob('img/gallery_temp/*', GLOB_ONLYDIR);
foreach($dirs as $val) {
echo '<div class="web-gallery">';
echo "<h3><span>»</span> ".basename($val). "</h3>";
echo '<ul class="web-gallery-list">';
$files = glob($val.'*.{jpg,png,gif}', GLOB_BRACE);
foreach($files as $file) {
echo "<li><a href='".$file."'><img src='" . $file . "' alt='description'></a></li> \r\n";
}
echo "</ul>";
echo "</div>";
}
答案 0 :(得分:1)
您可以考虑使用&#34; readdir&#34;而不是水珠。 Glob将找到与模式匹配的路径名,请参见此处:http://php.net/manual/en/function.glob.php并且已知有点问题。
Readdir,如果您的目录完全是图像可能更容易使用:http://php.net/manual/en/function.readdir.php
将此与is_dir()http://php.net/manual/en/function.is-dir.php结合使用以解析目录与文件。这是一个片段
<?php
if ($handle = opendir('/galleries')) {
while (false !== ($entry = readdir($handle))) {
// this is a subdirectory
if (is_dir($entry)) {
}
// this is a file
else {
echo $entry;
}
}
closedir($handle);
}
?>
如果你使它成为一个递归函数,你实际上可以遍历一些子目录,在画廊中创建画廊。
我还发现这个非常优雅的小片段在另一个堆栈问题上非常优雅:Get Images In Directory and Subdirectory With Glob
$rdi = new RecursiveDirectoryIterator("uploads/prevImgs/");
$it = new RecursiveIteratorIterator($rdi);
foreach($it as $oneThing)
if (is_file($oneThing))
echo '<img src="'.$oneThing.'" /><br />';
答案 1 :(得分:1)
只需在/
之前添加*.{jpg,png,gif}
,就像这样:
$files = glob($val.'/*.{jpg,png,gif}', GLOB_BRACE);
这是因为$val
目录没有最终/
。