Bonjour,
Je souhaite lister le contenu d'un répertoire en appliquant un filtre de type string.
J'y arrive avec glob :
Ci dessous, j'affiche la liste des fichiers qui commence par 'brisesvue'. Ou plutôt, les images qui correspondent au filtre.
J'aimerai faire la même chose avec opendir et readdir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php $cat = 'brisesvue'; $dirname = './images/'; $files = glob(''.$dirname.$cat.'_*.jpg'); foreach ($files as $filename) { echo '<img src="./images/'.str_replace($dirname, "", $filename).'" /> <br />'; } ?>
J'arrive à lister le contenu, à lire individuellement un fichier, mais je butte pour appliqué le filtre dans la boucle while.
Ci dessous, 1er partie du code qui fonctionne !
PAR CONTRE, Problème dans la boucle while !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <?php /* Objectif : Afficher une liste de fichier qui contiennent la chaine de caractère $filtre */ $filtre = 'brise'; // Chaine de caractère pour le filtre $imgrep = './images/'; // Répertoire ou se trouve les fichiers $dp = opendir($imgrep); $i=0; while ( $file = readdir($dp) ) { // On enleve les fichiers . et .. if ($file != '.' && $file != '..') { // Création d'un tableau avec la liste des fichiers $images[$i]=$file; $i++; } } closedir($dp); // Ci dessous quelques tests qui montrent que le array créé et le filtre appliqué sur un fichier isolé fonctionne correctement echo $images[0]; // Test affichage du 1er fichier sans images OK echo '<br />'; echo (strstr($images[1], $filtre)); // Test d'affichage d'un fichier qui remplit les conditions de images (brise-vue.jpg) OK echo '<br />'; echo (strstr($images[15], $filtre)); // Test d'affichage d'un fichier qui ne remplit pas les conditions de images (brise-vue.jpg) OK echo '<br />'; echo 'Fichiers trouvés : '.count($images); echo '<br />'; ?>
J'ai essayé des dizaines de combinaisons, mais rien à faire, soit cela affiche tout les fichiers, soit cela n'affiche rien.
Merci de votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php $i=0; //$img = strpos( $images[$i], $filtre); while ( $i < count($images)) // Avec ceci, cela fonctione, mais aucun filtre n'est appliqué //while ( ($img[$i] < count($images))) // Rien ne s'affiche //while ( $filtre === (strstr($images[$i], $filtre)))() // Rien ne s'affiche { echo "<li><a href='$imgrep/$images[$i]'><img src='$imgrep/$images[$i]'></a></li>"; $i++; } ?>
Partager