我有一个脚本通过一个包含3个图像的目录
$imglist='';
$img_folder = "path to my image";
//use the directory class
$imgs = dir($img_folder);
//read all files from the directory, checks if are images and ads them to a list
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file))
$imglist .= "$file ";
}
closedir($imgs->handle);
//put all images into an array
$imglist = explode(" ", $imglist);
//display image
foreach($imglist as $image) {
echo '<img src="'.$img_folder.$image.'">';
}
但我遇到的问题是它显示第4个没有图像的img ..但我在该文件夹中只有3个图像。
答案 0 :(得分:6)
无需构建一串图像,然后将该字符串分解为图像数组,而只需将图像直接添加到数组中,如Radu所述。 这是更正后的代码:
$imglist = array();
$img_folder = "path to my image";
//use the directory class
$imgs = dir($img_folder);
//read all files from the directory, checks if are images and adds them to a list
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file)){
$imglist[] = $file;
}
}
closedir($imgs->handle);
//display image
foreach($imglist as $image) {
echo '<img src="'.$img_folder.$image.'">';
}
答案 1 :(得分:2)
$imglist
字符串末尾有一个空格,explode()
将变为空元素。修剪字符串:
$imglist = explode(" ", trim($imglist));
或者更好的是,首先将它们添加到$imglist
数组中,而不是创建一个字符串并将其展开:
$imglist = array();
/* ... */
$imglist[] = $file;
答案 2 :(得分:2)
不推荐使用ereg()。你可能会更好:
chdir($img_folder);
$imgs = glob('*.jpg *.gif *.png');
foreach ($imgs as $img) {
echo "<img src=\"{$img_folder}/{$img}\">";
}
glob()进行通配符匹配的方式与大多数Unix shell完全相同。
答案 3 :(得分:0)
Use [glob()][1] function
<?php
define('IMAGEPATH', 'path to my image/'.$imglist.'/');
foreach(glob(IMAGEPATH.'*.jpg') as $filename){
echo '<img src="'.$filename.'" alt="'.$album.'" />';
?>
[1]: http://www.php.net/manual/en/function.glob.php