francoisch Posté 23 Août 2009 Partager Posté 23 Août 2009 Bonjour Jutilise cette fonction assez connue : function s_glob($dir, $typeFile=null) { $files = array(); if(is_dir($dir)) { if($dh=opendir($dir)) { while(($file = readdir($dh)) !== false) { if($typeFile == null || ereg('\.'.$typeFile.'$', $file)) { $files[]=$dir.$file; } } } } return $files; } pour lister tous les fichiers présents dans un dossier. Un exemple : $files = s_glob($_foo, 'jpg'); Je voudrais inclure dans cette recherche aussi les fichiers dont le filetype est exprimé en majuscules. Comme mes connaissances en Php sont modestes, je narrive pas à trouver la bonne modification ; je ne sais pas où placer un strtolower(). Merci par avance de toute aide. Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 23 Août 2009 Partager Posté 23 Août 2009 Essaye en ajoutant un "i" (pour "case insensitive"; insensible à la casse), après le signe $ dans l'expression régulière : ereg('\.'.$typeFile.'$i', $file)) Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 23 Août 2009 Auteur Partager Posté 23 Août 2009 Captain Encore une fois merci. Je n'aurais certainement pas trouvé ça tout seul même en y mettant longtemps. Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 23 Août 2009 Auteur Partager Posté 23 Août 2009 bonjour Woops, je suis allé un peu vite, ça paraît ne pas fonctionner. La fonction, avec les traces que jy ai ajouté : function s_glob($dir, $typeFile=null) { echo "typeFile avant: ".$typeFile."<br>"; $typeFile = strtolower($typeFile); // mettre le file type en minuscules $files = array(); if(is_dir($dir)) { if($dh=opendir($dir)) { while(($file = readdir($dh)) !== false) { // echo "typeFile while: ".$typeFile."<br>"; echo "file while: ".$file."<br>"; if($typeFile == null || ereg('\.'.$typeFile.'$i', $file)) { echo "typeFile apres: ".$typeFile."<br>"; $files[]=$dir.$file; } } } } return $files; } Les traces : typeFile avant: jpgfile while: .file while: ..file while: IMG11.JPGfile while: IMG10.JPGfile while: repfam01.jpgfile while: IMG1.JPGfile while: IMG2.JPGfile while: IMG13.JPGfile while: repfam02.jpgfile while: IMG3.JPGfile while: IMG4.JPGfile while: IMG12.JPG Il paraît bien ne pas passer dans if($typeFile == null || ereg('\.'.$typeFile.'$i', $file)). Jai raté qqechose ? Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 23 Août 2009 Partager Posté 23 Août 2009 Essaye de remplacer ereg... par preg_match('\.'.$typeFile.'$i', $file)) Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 23 Août 2009 Auteur Partager Posté 23 Août 2009 Captain Ma ligne est bien devenue: if($typeFile == null || preg_match('\.'.$typeFile.'$i', $file)) mais j'ai un message d'erreur que je ne comprend pas: Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash /homez.110/fctest/www/glob.php on line 22 Merci de ton aide. Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 23 Août 2009 Partager Posté 23 Août 2009 Au temps pour moi, j'ai oublié les délimiteurs. Remplace par if($typeFile == null || preg_match('#\.'.$typeFile.'$#i', $file)) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Leonick Posté 24 Août 2009 Partager Posté 24 Août 2009 utilises eregi au lieu de ereg Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 24 Août 2009 Auteur Partager Posté 24 Août 2009 Merci de vos réponses. Eregi semble fonctionner impeccablement, donc tout va bien. Merci encore. Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant