francoisch Posté 23 Août 2009 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
captain_torche Posté 23 Août 2009 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))
francoisch Posté 23 Août 2009 Auteur 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
francoisch Posté 23 Août 2009 Auteur 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
captain_torche Posté 23 Août 2009 Posté 23 Août 2009 Essaye de remplacer ereg... par preg_match('\.'.$typeFile.'$i', $file))
francoisch Posté 23 Août 2009 Auteur 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
captain_torche Posté 23 Août 2009 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))
francoisch Posté 24 Août 2009 Auteur Posté 24 Août 2009 Merci de vos réponses. Eregi semble fonctionner impeccablement, donc tout va bien. Merci encore. Francois
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant