使用php获取图像列表时,如何链接到子目录中的缩略图?

使用php获取图像列表时,如何链接到子目录中的缩略图?,php,thumbnails,subdirectory,Php,Thumbnails,Subdirectory,如果标题有点模糊,我很抱歉。。。我对PHP还比较陌生(3个月左右),而且,我的母语不是英语,所以请容忍我:)我也广泛搜索了这个网站和谷歌,试图找到一个解决方案,但没有任何运气 我在images目录中设置了一个脚本,该脚本扫描所有子目录,然后输出一个链接列表,如果单击该列表,您将进入一个页面,其中显示所选子目录的所有图像。该页面的路径为: www.mysite.com/images/list_images.php?folderName=RandomFolder 此操作的代码: images/in

如果标题有点模糊,我很抱歉。。。我对PHP还比较陌生(3个月左右),而且,我的母语不是英语,所以请容忍我:)我也广泛搜索了这个网站和谷歌,试图找到一个解决方案,但没有任何运气

我在images目录中设置了一个脚本,该脚本扫描所有子目录,然后输出一个链接列表,如果单击该列表,您将进入一个页面,其中显示所选子目录的所有图像。该页面的路径为:

www.mysite.com/images/list_images.php?folderName=RandomFolder
此操作的代码:

images/index.php

<?php
  $path = 'images/' ;
  $results = scandir($path);
  for ($i=0;$i<count($results);$i++)
  {
    $result=$results[$i];
    if ($result === '.' or $result === '..') 
      continue;
    if (is_dir($path . '/' . $result)) 
     {
      echo "<a href='list_images.php?folderName=$result'>$result</a><br/>";
     }
   }
?>

--------------------
list_images.php

<?php
   if(isset($_GET['folderName'])) 
      $folder=$_GET['folderName'];
   $path = 'images/'.$folder.'/' ;
   $images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
   foreach ($images as $image)
    {
     echo "<a href='$image'><img src='$image'/></a>";
    }
?>
images/index.php
--------------------
list_images.php
现在,我的问题是: 在我的每个图像子目录中,我都有另一个名为“thumbs”的子目录,其中包含-是的,你猜对了-缩略图。每个缩略图的名称与其上方目录中对应的文件完全相同。现在,我如何使上面代码中的img src指向拇指

欢迎任何帮助!提前谢谢你

编辑:

我又看了一遍我的代码,又多写了几行。它仍然不工作,但至少现在它输出缩略图,链接到更大的图像。以下是新代码:

list_images.php
    if (isset($_GET['folderName'])) $folder=$_GET['folderName'];
    $path = 'images/'.$folder.'/' ;
    $thumb_path = ''.$path.'/thumbs/';
    $thumbs = glob($thumb_path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
    $images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
    foreach ($thumbs as $thumb){
        foreach ($images as $image){
            echo "<a class='fancybox' href='$image'><img src='$thumb'/></a>";
        }
    }
list_images.php
如果(isset($\u GET['folderName']))$folder=$\u GET['folderName'];
$path='images/'。$folder'/';
$thumb_path='.$path.'/thumbs/';
$thumbs=glob($thumb_path.*.{jpg,jpeg,png,gif}',glob_括号);
$images=glob($path.'*.{jpg,jpeg,png,gif}',glob_括号);
foreach($thumbs作为$thumb){
foreach($images作为$image){
回声“;
}
}
现在可以用了。唯一的问题是,它为每张图片输出13个完全相同的缩略图,而且它会输出13次(对于包含13个图像文件的目录),因此总共有169个缩略图


您知道如何解决此问题吗?

如果您确定文件夹名为
thumbs
,则没有理由不能对其进行硬编码。请看以下内容

echo "<a href='$image'><img src='thumbs/$image'/></a>";
echo”“;

您可以在路径上执行
str\u replace

如果图像的路径为
mydir\image01\pic01.jpg

str_replace('image01','image01\thumb',$image);

请指向
mydir\image01\thumb\pic01.jpg

谢谢您的快速响应。我已经试过你的建议了。它可以工作,但缩略图不知何故不起作用-它们显示为小“破碎”图像。。。(我不知道它们叫什么)但是我不需要为每个imagefolder做str_替换吗?啊,我现在看到你有了
$path='images/'.$folder./'
。为什么不把
thumbs/
放在它后面,这样它就可以扫描thumbs文件夹了?不,那也不行——我之前已经试过了。这也会将链接转换为指向拇指,而不是更大的文件。最后一部分是使用@Sajans解决方案解决的。您是否检查了生成的html中图像的路径?听起来在引用缩略图时出现了一些错误。由于代码的设置方式,指向缩略图的路径(使用此方法)将是
images/random\u folder/images/random\u folder/thumbs
str_replace('image01','image01\thumb',$image);