1

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

任何帮助将非常感激!

非常感谢!

4

3 回答 3

0

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

于 2013-02-24T20:11:21.660 回答
0

此代码应按字母顺序显示所有图像的列表(使用 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 代码的部分,以便于阅读和理解,如果你愿意,可以将它们合并为一个函数。

于 2013-02-24T20:23:48.150 回答
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);
于 2013-02-24T20:24:19.867 回答