Php读取目录文件

时间:2011-07-08 17:38:31

标签: php

我有一个脚本通过一个包含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个图像。

4 个答案:

答案 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