根据this question中的原始代码和那里的Tims纠正(答案1)我试图实现以下目标:
我有一个包含图片的文件夹“img”,如下所示:
从“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);
?>
非常感谢任何帮助!
非常感谢!
答案 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);