récupérer les noms des fichiers d'un dossier dans un array

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récupérer les noms des fichiers d'un dossier dans un array

Re: récupérer les noms des fichiers d'un dossier dans un array

par macgawel » 23 déc. 2009, 11:05

function count_files($dir)
{
	$num = 0;

	$dir_handle = opendir($dir);
	while($entry = readdir($dir_handle))
	if(is_file($dir.'/'.$entry))
	$num++;
	closedir($dir_handle);

	return $num;
}
En gros il faudrait récupérer les noms des fichiers dans un array ( comment faire? on m'a parlé de la fonction glob () mais je ne sais la manipuler..)
et apeller à chaque while la ligne suivante du array ....
Bonjour.

1. Pense à mettre ton code entre des balises [ php], et à l'indenter. Ce sera plus clair...

2. Tu as - presque - la solution sous les yeux !
Fonctionnement de count_files :
Tu ouvre un répertoire
POUR CHAQUE élément,
SI c'est un fichier on incrémente un compteur
Tu renvoies le compteur (=> nombre de fichier)

Fonctionement de ton programme:
Tu appelles la fonction count_files pour récupérer dans $total le nombre de fichiers
DE 1 à $total
Tu veux récupérer le nom du fichier
Tu appliques le preg_replace

Mais tu n'as pas réellement besoin de savoir combien de fichiers il y a.
En fait, tu pourrais faire ça :
Tu ouvre un répertoire
POUR CHAQUE élément,
SI c'est un fichier
Tu appliques le preg_replace
FIN
C'est à dire, à peu de choses près la fonction count_files
$dir_handle = opendir($dir);
while($entry = readdir($dir_handle)) { // Pour chaque élément du répertoire
	if(is_file($dir.'/'.$entry)) { // Si c'est un fichier on applique le preg
		$pattern= '~\b$entry\b~i'
		$replacement= " <img src=\"gifs/.$entry..gif\"> "
		$string= preg_replace($entry, $replacement, $string);
	}
}

récupérer les noms des fichiers d'un dossier dans un array

par billbao1987 » 22 déc. 2009, 19:46

Salut à tous !
Je travaille actuellement sur les possibilités de traitement de texte en php.
Afin de faire des tests avec la fonction preg_replace,
j'ai réuni dans un dossier un vocabulaire de 200 gifs typographiques.

J'ai déja programmé la base du script, mais actuellement j'ai 200 ligne de preg replace pour chaque mot dont j'ai un gif correspondants. le tout tapé à la main et au copié collé . Peu intelligent #-o :pt1cable: !
voiçi l'adresse si vous voulez jeter un coup d'oeil: http://billbao1987.free.fr/ereg/

J'essaye à présent de programmer un script dynamique qui pour chaque image du dossier,
recherche dans ma $string les occurences de ce mot, puis les remplace par l'image correspondante.

j'ai commençé la structure globale, mais je n'arrive pas à coder la transformation du nom du fichier en variable $pattern recherché ..

--------------------------
voici ce que j'ai déja:
--------------------------

//compter le nbre de gifs disponibles dans le dossier gif/ ; qui contient bla.gif , bli.gif, et blo.gif:
$dir = "gifs/" ;

function count_files($dir)
{
$num = 0;

$dir_handle = opendir($dir);
while($entry = readdir($dir_handle))
if(is_file($dir.'/'.$entry))
$num++;
closedir($dir_handle);

return $num;
}

$total = count_files($dir);

$string= " bla bli bla bla "

// Remplacer chaque occurence d'un nom de fichier par le fichier correspondant.
$i = 1;
while ($i <= $total) {

$name= // là il me manque une fonction récupérant le nom d'un fichier correspondant à $i
$pattern= '~\b$name\b~i'
$replacement= " <img src=\"gifs/.$name..gif\"> "

$string= preg_replace($name, $replacement, $string);

$i++;
}

if ($i=200) {
echo $string ;
}


---------------------------------
là ou vous pouvez m'aider
---------------------------------

Comment récupérer à chaque while le nom d'un des gifs afin de m'en servir pour le scan et le remplacement preg_replace ?

En gros il faudrait récupérer les noms des fichiers dans un array ( comment faire? on m'a parlé de la fonction glob () mais je ne sais la manipuler..)
et apeller à chaque while la ligne suivante du array ....

:priere: Merci à tous !

Alex, étudiant à l'école supérieure des arts décoratifs de Strasbourg.