【问题标题】:Pull dedicated images from folder - show image + filename (strip part of filename + file-extension)从文件夹中提取专用图像 - 显示图像 + 文件名(去除文件名的一部分 + 文件扩展名)
【发布时间】:2013-02-24 20:07:44
【问题描述】:

基于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);
?> 

任何帮助将不胜感激!

非常感谢!

【问题讨论】:

    标签: php


    【解决方案1】:

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

    然后它输出一个 HTML 图像(指向“_alternate”图像)和图像的文件名(没有路径,“_alternate”或“扩展名”)。

    <?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 代码的部分,以便于阅读和理解,如果你愿意,可以将它们合并为一个函数。

    【讨论】:

    • 感谢 Rob,几乎可以立即工作。我不得不使用这个:echo "&lt;img src=\"/$file\" width=\"200\" height=\"200\" /&gt;";(需要去掉 img 部分)。
    【解决方案2】:

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

    【讨论】:

    • 谢谢,Leeish,非常感谢您的帮助!我使用了上面的 Rob 代码,它可以很好地满足我的需求。
    【解决方案3】:
    $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);
    

    【讨论】:

    • 谢谢,OTP,非常感谢您的帮助!我使用了上面的 Rob 代码,它可以很好地满足我的需求。
    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2021-09-19
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多