4 votes

Php lit le fichier du répertoire

J'ai un script qui passe par un répertoire qui a 3 images.

$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.'">';
}

mais le problème que j'ai est qu'il affiche une 4ème image sans aucune image alors que je n'ai que 3 images dans ce dossier.

6voto

Mark Points 502

Il n'est pas nécessaire de construire une chaîne d'images puis d'exploser cette chaîne en un tableau d'images. Il suffit d'ajouter les images directement dans un tableau comme Radu l'a mentionné. Voici le code corrigé :

$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.'">';
}

2voto

rid Points 24625

Il y aura un espace à la fin de l'adresse de l'utilisateur. $imglist chaîne de caractères, qui explode() se transformera en un élément vide. Coupez la chaîne :

$imglist = explode(" ", trim($imglist));

Ou mieux encore, ajoutez-les simplement à la $imglist en premier lieu, au lieu de créer une chaîne et de l'exploser :

$imglist = array();
/* ... */
$imglist[] = $file;

2voto

Marc B Points 195501

Ereg() est déprécié. Vous seriez probablement mieux avec :

chdir($img_folder);
$imgs = glob('*.jpg *.gif *.png');
foreach ($imgs as $img) {
    echo "<img src=\"{$img_folder}/{$img}\">";
}

glob() fait la correspondance avec les caractères génériques à peu près de la même manière que la plupart des shells Unix.

0voto

Roshni Points 305
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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X