从文件夹中提取专用图像 - 显示图像+文件名(删除文件名部分+文件扩展名)

时间:2013-02-24 20:07:45

标签: php

根据this question中的原始代码和那里的Tims纠正(答案1)我试图实现以下目标:

我有一个包含图片的文件夹“img”,如下所示:

  • image_123.jpg
  • image_123_alternate.jpg
  • image_456.jpg
  • image_456_alternate.jpg
  • image_789.jpg
  • image_789_alternate.jpg
  • 等...... (注意:所有图像的大小都相同,为200px / 200px)

从“img”文件夹中提取时,简单的HTML页面应以下列方式显示图像和文件名:

文件名中包含“_alternate”部分的实际图像(仅限这些)+文本框中图像下方不包含“_alternate”部分(没有文件扩展名)的图像文件名。应按字母顺序拉出所有对。在下面的示例中,粗体大写字母表示要显示的实际图像:

IMAGE_123_ALTERNATE
文本框:“image_123”

IMAGE_456_ALTERNATE
文本框:“image_456”

IMAGE_789_ALTERNATE
文本框:“image_789”

这是我到目前为止,但它显示所有图像和文件名:

<?php
$dir = opendir("img");
while (($file = readdir($dir)) !== false)
{
echo "<a href='img/".$file."' target='_blank'> <img src='img/".$file."'width='200' height='200' /></a><br />";
echo "<textarea>$file</textarea><br /><br />";
}
closedir($dir);
?> 

非常感谢任何帮助!

非常感谢!

3 个答案:

答案 0 :(得分:0)

只需通过while循环中的if语句即可。检查文件名是否包含备用或否。如果它不包含alternate运行相同的代码,则用“_alternate.ext”替换文件扩展名,同时保持文本区域相同。如果它确实包含alternalte,什么都不做。这样你只处理了一半的文件。

答案 1 :(得分:0)

此代码应按字母顺序显示所有图像的列表(使用PHP的GLOB函数)。

然后输出一个HTML图像(导致“_alternate”图像)和图像的文件名(没有路径,“_alternate”或“extension”)。

<?php

    foreach (glob("img/*_alternate.jpg") as $file) {

         $filename_parts = pathinfo($file);
         $filename = $filename_parts['filename'];
         $filename = str_replace("_alternate", "", $filename);

         echo "<div>";
         echo "<img src=\"/$file\" width=\"200\" height=\"200\" />";
         echo "<p>$filename</p>"; 

    }

?>

我拆开了找到新文件名的函数和输出HTML代码的部分,以便于阅读和理解,如果你愿意,可以将它们合并到一个函数中。

答案 2 :(得分:0)

$files = new \DirectoryIterator('img'); // <- this should be the full absolute path!
$images = array();

// pick up jpg images that end in 'alternate'
foreach($files as $file){
  $name = $file->getBasename('.jpg');
  if(strripos($name, 'alternate') === (strlen($name) - 9))
    $images[] = $name;        
}

// sort them
sort($images, SORT_STRING);

// and do your thing here with $images...
var_dump($images);