Page 1 sur 1

Problème moteur de recherche, sans BDD, résultat sur doc xls

Posté : 08 juin 2007, 17:06
par CoYaN
Bonjour,

Je suis en train de faire un moteur de recherche interne sans BDD.
Le moteur fait ça recherche dans tous les dossiers et sous dossiers, avec un seul mot mis dans le formulaire.
Le mot est recherché sur le nom du fichier, l’extension, et dans la lecture du fichier.
Le moteur lis dans php, htm, txt, doc, xls.
Le problème est que les résultats de doc et xls ne s’affiche pas correctement, j’ai des caractères incompréhensibles a la lecture, style carré ou des ÿ etc…
Je souhaiterai pouvoir faire des recherches également dans les pdf.

Si vous avez une solution, je suis à votre écoute.

Cordialement.

Formulaire dans index.php
<form method="post" target="_blank" action="test/Search.php"><br>
<div align="center"></div>
<div align="center"><span class="Style14 Style416"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RECHERCHE SUR LE SITE</span><br>
<input type="hidden" value="<?php echo $mot2 ?>" name="action">
&nbsp;&nbsp;&nbsp;<input type="text" maxlength="50" size="14" name="mot" onChange="javascript:this.value=this.value.toLowerCase();">				
<input style="font-family:Verdana; font-size:10px; color:#CC0000; background-color:#DDDDDD" type="submit" value="Go"><br></div>
</form>
Search.php (dans dossier test/)
<?php
//Nombre de résultats affichés par page  
$maxipage="10";

//Dossiers à scanner 
$dossier=array( 
""=>"..",
);

//Scan des sous-dossiers (jusqu'a 10 sous-dossier) : on ou off
$scan_sousdos="on";

//Configuration des fichiers/dossiers à exclure de la recherche 
$exclu=array(
"../test", 
); 

//Affichage de l'extension des fichiers : on ou off
$montre_ext="on"; 

//Url
$go2url="[dossier]/[fichier]"; 
?>

<title>Moteur de Recherche</title>

<?php
//On adapte les variables selon la version de PHP 
$version_de_php=phpversion(); 
$version_de_php=str_replace(".","",$version_de_php); 
if($version_de_php>=410){ 
   $action = $_POST['action']; 
   $mot = $_POST['mot']; 
   $start = $_POST['start']; 
   $multi = $_POST['multi']; 
} 

// Liste des codes htmls spéciaux 
$caractere_special=array(
"&agrave;"=>"à",
"&aacute;"=>"á",
"&acirc;"=>"â",
"&atilde;"=>"ã",
"&auml;"=>"ä",
"&aring;"=>"å",
"&aelig;"=>"æ",
"&ccedil;"=>"ç",
"&egrave;"=>"è",
"&eacute;"=>"é",
"&ecirc;"=>"ê",
"&euml;"=>"ë",
"&icirc;"=>"î",
"&iuml;"=>"ï",
"&ocirc;"=>"ô",
"&ouml;"=>"ö",
"&ugrave;"=>"ù",
"&uacute;"=>"ú",
"&ucirc;"=>"û",
"&uuml;"=>"ü",
"&"=>"&",
); 

//Variables par défaut 
if($maxmots==""){ $maxmots="20"; } 
if($maxipage==""){ $maxipage="20"; } 
if($start=="" || $start=="0" ){ $start="1"; } 
$longueur_mot=strlen($mot); 
$mot=trim($mot); 
$mot=ereg_replace(" +", " ", $mot); 
$mot2=htmlspecialchars($mot); 
?>

<?php 
// On vérifie la longueur de la recherche 
if($longueur_mot<3){ 
echo("<span class=\"1\"><u>Attention</u>: Votre recherche doit comporter au moins trois caractères.</span><br><br>"); 
echo("<a href=\"javascript:window.close();\">Fermer la fenetre</a>");
exit(); } 

// Résultats à 0 
$compteresultats="0"; 
$zetotal="0"; 

//Scan des sous dossiers sur 10 niveaux si on l'a activé 
//On vérifie les sous-dossiers à scanner uniquement ici
//Ensuite on les rajoute à la liste 
//Comme ça après on n'aura plus qu'a faire un scan classique 
//Sur tous les dossiers de la liste 
if($scan_sousdos=="on"){ 

$encore1=array(); 
$encore2=array(); 

foreach($dossier as $nomdos=>$d){ 

//Sous-dossier 1 
$fp=opendir("$d");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$d."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore1[]="$verif"; 

}}} closedir($fp);  
unset($fp); unset($nomdos); } 

//Sous-dossier 2 
foreach($encore1 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore2[]="$verif"; 

}}} closedir($fp); 
unset($fp,$nom_du_soudos,$le_soudos); 
$encore1=array(); } 

//Sous-dossier 3 
foreach($encore2 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore1[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos); 
$encore2=array(); } 

//Sous-dossier 4 
foreach($encore1 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore2[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos); 
$encore1=array(); } 

//Sous-dossier 5 
foreach($encore2 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore1[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos); 
$encore2=array(); } 

//Sous-dossier 6 
foreach($encore1 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore2[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos); 
$encore1=array(); } 

//Sous-dossier 7 
foreach($encore2 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore1[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos); 
$encore2=array(); } 

//Sous-dossier 8 
foreach($encore1 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif";  
$encore2[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos); 
$encore1=array(); } 

//Sous-dossier 9 
foreach($encore2 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 
$encore1[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos); } 

//Sous-dossier 10 
foreach($encore1 as $nom_du_soudos=>$le_soudos){ 
$fp=opendir("$le_soudos");  
while($file = readdir($fp)){ 
if($file!='.' && $file!='..'){ 	
$verif=$le_soudos."/".$file; 
if(is_dir($verif) && !(in_array($verif, $dossier)) && !(in_array($verif, $exclu))){ 

$dossier[]="$verif"; 

}}} closedir($fp);  
unset($fp,$nom_du_soudos,$le_soudos,$encore1,$encore2); 
}} 

//Passage en minuscules de la recherche
$mot=strtolower($mot); 

//Maintenant on lance le scan classique sur les dossiers de la liste 
//Les sous-dossiers ont été rajoutés au besoin par la fonction précédente 
foreach($dossier as $nomdos=>$d){ 

//Ouverture fichier 
$fp=opendir("$d"); 
while($file = readdir($fp)){ 
if($file=="." || $file==".." || is_dir($file)){ continue; } 

//On ne scanne pas les fichiers exclus 
if(in_array($file, $exclu)){ continue; } 

//On récupère l'extension 
$ext = ereg_replace('^.*[.]([^.]*)$', '\\1', $file); 

//Sélection des extensions
//On ne scanne que ces types de fichiers 
if(
   $ext!="htm" 
&& $ext!="html" 
&& $ext!="htmls" 
&& $ext!="php" 
&& $ext!="php3" 
&& $ext!="php4" 
&& $ext!="php5"
&& $ext!="txt" 
&& $ext!="doc" 
&& $ext!="xls" 
&& $ext!="pdf" 
&& $ext!="zip" 
&& $ext!="gif" 
&& $ext!="jpg" 
&& $ext!="png"){ continue; } 

//Maintenant on est sûr de devoir scanner le fichier
//On peut éxécuter tous les traitements nécessaires

//Détermination du type de fichier 
//On ne vérifiera que le nom des fichiers de type "img" (image) 
//alors que les fichiers de type "normal" seront entièrement retraités 
//car considérés comme contenant du texte lisible par le moteur. 
if($ext=="htm" || $ext=="html" || $ext=="htmls" || $ext=="php" || $ext=="php3" || $ext=="php4" || $ext=="php5" || $ext=="txt" || $ext=="doc" || $ext=="xls" || $ext=="pdf"){ 
$filetype="normal"; } else { $filetype="img"; } 

//Maintenant qu'on a déterminé la place de notre fichier entre les deux types 
//On va appliquer des retraitements préliminaires sur les fichiers de type "normal" uniquement 
if($filetype=="normal"){ 

//On ouvre le contenu du fichier    
$recupere_le_fichier=fopen("$d/$file","r"); 
$tout=fread($recupere_le_fichier,500000); 
fclose($recupere_le_fichier); 

//Passage en minuscules 
$tout=strtolower($tout); 

// Suppression du code
//$tout=notag($tout);

//On vire le html et le php 
$tout=strip_tags($tout,'<title></title><script></script><head></head><style></style>'); 

//On récupère le titre du fichier 
//Ou alors on affiche le nom avec l'extension 
//Puis on supprime le titre pour ne pas fausser les résultats  
if(strpos($tout,"<title>") && strpos($tout,"</title>")){ 
$titre1=strstr($tout,'<title>'); 
$titre2=strstr($tout,'</title>'); 
$titre1=str_replace("$titre2","",$titre1); 
$titre1=str_replace("<title>","",$titre1); 
if($titre1==""){ $titre=$file; } else{ $titre=$titre1; }
}  
else{ 
$titre=$file; } 

$titre=strtolower($titre); 
unset($titre1, $titre2); 
$tout = preg_replace('`<title.*?/title>`', '', $tout); 

//On effectue des remplacements pour pouvoir appliquer les regex : 
//1- On remplace le saut de ligne par un espace 
//3- Les &nbsp; (code html pour un espace) sont remplacés par des espaces 
//4- Les doubles espaces sont remplacés par un simple espace 
$tout = str_replace("\n"," ",$tout); 
$tout = str_replace("&nbsp;"," ",$tout); 
$tout = str_replace("  "," ",$tout); 

$tout = str_replace('<','<',$tout);
$tout = str_replace('>','>',$tout);
$tout = str_replace('"','"',$tout);
$tout = str_replace('&','&',$tout);
$tout = str_replace("@@","&#",$tout);

//On lance les regex 
//1- On vire le code entre <head> et </head> qui contient en général tout les trucs qui ne nous intéressent pas ici (feuille de style, javascript...) 
//2- On vire le javascript pour éviter les bugs au cas ou une partie nous aurait échappée 
//3- On vire les attributs de style pour les mêmes raisons 
$tout = preg_replace('`<head.*?/head>`', '', $tout); 
$tout = preg_replace('`<script.*?/script>`', '', $tout); 
$tout = preg_replace('`<style.*?/style>`', '', $tout); 

//On remplace le code html des accents et autres caractères spéciaux par le terme correspondant 
//pour le titre et le contenu 
foreach($caractere_special as $caractere_code=>$caractere_traduction){ 
$tout = str_replace("$caractere_code","$caractere_traduction",$tout); 
$titre = str_replace("$caractere_code","$caractere_traduction",$titre); } 
} 

//On incrémente le nb de fichiers scannés
$zetotal++; 
if($zetotal>9999){ continue 2; } 

//Si on trouve la recherche 
//if(strpos("$tout","$mot") || strpos("$file","$mot") || strpos("$titre","$mot")){ 
if(strpos(strtolower($tout),strtolower($mot))>-1 || strpos(strtolower($file),strtolower($mot))>-1 || strpos(strtolower($titre),strtolower($mot))>-1){

//Résultats +1 
$compteresultats++; 

//S'il s'agit d'un fichier de type "normal" 
if($filetype=="normal"){ 

//On compte les occurences du terme 
$total_mots=intval(substr_count($titre,$mot)*10+$total_mots); 
$total_mots=intval(substr_count($tout,$mot)+$total_mots); 

//On crée la description 
$position=strpos($tout, $mot); 
$start_position=intval($position-50); 
if($start_position<0){ $start_position="0"; } 
$fin_position=intval($longueur_mot+100); 

if($position === FALSE ){ 
$resume.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Terme exact introuvable dans le contenu du fichier. (voir Ext.)"; } 
else{ 
$resume="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... "; 
//$resume.=substr($tout, $start_position, $fin_position); 
$resume.=substr($tout, $start_position, $fin_position); 
$resume.=" ..."; 

//On met en gras le terme recherché dans la description 
$resume=str_replace($mot,"<b>$mot2</b>",$resume); }    
} 

//Si c'est une image ou un autre type de fichier 
//On adapte la description  
else{ $resume="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fichier $ext"; } 

//Puis dans le titre 
$titre=str_replace($mot,"<b>$mot2</b>",$titre); 

//Calcul du pourcentage de pertinence 
similar_text($mot, $tout, $p1); 
similar_text($mot, $titre, $p2); 
$p=intval($p1+$p2); 

//Si le pourcentage est supérieur ou égal à 100 on le ramène à 99 
//Et s'il est égal à 0 on le ramène à 1 pour qu'il puisse être réindexé (voir suite) 
if($p>=100){ $p="99"; } 
if($p=="0"){ $p="1"; } 

if($total_mots>=100){ $total_mots="99"; } 
if (strlen($total_mots)==1){ 
$total_mots=str_repeat("0",2-strlen($total_mots)).$total_mots; } 
$total_mots=substr($total_mots, 0, 1); 

//Idem pour les pourcentages 
if (strlen($p)==1){ 
$p=str_repeat("0",2-strlen($p)).$p; }

//Et enfin le numéro du résultat 
$compteresultats2=$compteresultats; 
if (strlen($compteresultats2)<4){ 
$compteresultats2=str_repeat("0",4-strlen($compteresultats2)).$compteresultats2; } 

//On met la première lettre du titre en majuscules 
$titre=ucfirst($titre); 

//On vire l'extension si besoin 
if($montre_ext=="off" && $filetype!="img"){ 
$file=str_replace(".$ext","",$file); } 

if($go2url==""){ $go_2_url="$d/$file"; } 
else{ 
$go_2_url="$go2url";
$go_2_url=str_replace("[dossier]",$d,$go_2_url); 
$go_2_url=str_replace("[fichier]",$file,$go_2_url); } 

//Source du résultat 
$src=" <A href=\"$go_2_url\" target=_blank><span class=\"2\">$titre</span></A> <br> 
$resume <br>
<span class=\"4\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$go_2_url</span><br>
"; 

//On enregistre 
$zeresults["1".$total_mots."".$p."".$compteresultats2]="$src"; 

//On remet a zéro histoire d'éviter des doublons  
unset(
$compteresultats2,
$tout,
$resume,
$src,
$titre,
$filetype,
$p,
$p1,
$p2,
$file,
$ext,
$total_mots,
$register
); 

}}   

//Fermeture 
closedir($fp); 
unset($tout,$filetype,$fp,$ext); } 

//Si on a des résultats
//On les classe par ordre décroissant de pertinence 
if($compteresultats>0){ 
krsort($zeresults); 
array_unshift($zeresults,"rien"); } 

//On définit les différentes variables qui serviront pour la barre de navigation 
if($start=="1" && $compteresultats=="0" ){ $start="0"; } 
$pourvoir=intval($start+$maxipage-1);
if($pourvoir>$compteresultats){ $pourvoir=$compteresultats; } 
$finstart=intval($compteresultats-$maxipage+1); 
$prevbarre=intval($start-$maxipage);
$nextbarre=intval($start+$maxipage); 
$nb_barre="1"; 
$compte_affichage=$start; 

//Changement du texte selon les résultats 
//Entre singulier et pluriel 
$rs=" résultat trouvé ";
$fich=" fichier"; 
if($compteresultats>1){ $rs=" résultats trouvés "; }
if($zetotal>1){ $fich=" fichiers"; } 

//Maintenant on commence l'affichage 
if($compteresultats=="0"){ 
echo("<span class=\"3\"><br>Aucun résultat trouvé sur <b>$mot2</b> dans nos données.<br> Essayez d'élargir votre recherche en y mettant moins de mots ou vérifiez son orthographe.</span><br><br>"); 
} 
else {
echo ("<span class=\"3\">Vous venez d'effectuer une recherche sur : <b>$mot2</b></span><br><span class=\"3\"><b> $compteresultats $rs</b></span><br><br>");
}

//On sélectionne les éléments du tableau de résultat à afficher et on les lance 
if($compteresultats>0){ 
foreach($zeresults as $key=>$value){ 
if($key>=$start && $key<$nextbarre){ 

echo("<b>$key</b> : $value<br>");

$compte_affichage++; }}  }

echo("<a href=\"javascript:window.close();\">Fermer la fenetre</a>");

//Et si on a trop de résultats par rapport au nombre à afficher dans la page on met la barre de navigation 
if($compteresultats>$maxipage){ 

echo("<p align=center><br>"); 

if($start!="1"){ 
echo("<A href=\"Search.php?mot=$mot&action=go&choix=$choix\"><< Début</A> <A href=\"Search.php?mot=$mot&action=go&start=$prevbarre&choix=$choix\">< Page précédente</A> ("); }
else{ echo("<< Début < Page précédente ("); }

for($barre=1;$barre<$compteresultats;){ 
$finbarre=intval($compteresultats-$barre); 
echo(" <A href=\"Search.php?mot=$mot&action=go&start=$barre&choix=$choix\">$nb_barre</A> "); 
$nb_barre++; 
$barre=intval($barre+$maxipage); } 

if($start<$finstart){ echo(") <A href=\"Search.php?mot=$mot&action=go&start=$nextbarre&choix=$choix\">Page suivante ></A> <A href=\"Search.php?mot=$mot&action=go&start=$finstart&choix=$choix\">Fin >></A>"); } 
else{ echo(") Page suivante >  Fin >>"); } 

echo("</p>"); 
} 


?>

Posté : 08 juin 2007, 17:18
par Genova
Bonjour,
déjà pour commencer tu devrais utiliser des fonctions au lieu de répéter 10 fois le même code pour la recherche dans les dossiers, ça permettrait de rendre ton code plus lisible, car là c'est même pas la peine ...

Sinon les fichiers doc, xls, etc .. ne sont pas des bètes fichiers avec les mots en leur sein. Ils sont encodés, et pour les lire la tache est bien plus ardue. Tu vas devoir passer par des classes qui permettent de lire des fichier excel, pdf, word ... autant dire bonne chance ;)

Posté : 08 juin 2007, 17:20
par CoYaN
Peux-tu me dire comment faire une classe afin de réduire la lecture des sous-dossiers ?

Merci pour le bonne chance :cry:

Posté : 08 juin 2007, 18:02
par Klomac
Valable en PHP5
$dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/dossierdebase'), TRUE);

foreach ($dir as $file)
{
  //Ici tu peux appeler un certains nombre de méthodes sur $file, à savoir les méthodes de DirectoryIterator et RecursiveDirectoryIterator dans la liste ici : http://fr.php.net/SPL
}
C'est bête comme chou et ça parcourt dans l'ordre tous tes sous-dossiers, fichier par fichier :) A noter que si tu veux supprimer les dossiers du foreach (ils seront toujours parcourus mais n'apparaitront pas dans ta boucle), tu vires le paramètre TRUE à la première ligne.[/php]

Posté : 08 juin 2007, 18:14
par CoYaN
J'ai PHP4

Posté : 08 juin 2007, 18:45
par Klomac
L'exemple ci-dessus est une bonne raison (parmi tant d'autres) de se mettre à PHP5 ;)

Mais si tu veux faire la même chose en PHP4 c'est un peu (pas trop) plus compliqué : tu crées une fonction (ou une classe) qui passe en revue les fichiers dans un dossier (tout simple à faire), et à l'intérieur de cette fonction, si la variable est un fichier (is_file) tu fais ce que tu veux avec, si c'est un dossier (is_dir) tu fais appel à ta fonction (à l'intérieur d'elle-même donc) sur ce dossier. On appelle ça la récursivité (faire appel à une fonction à l'intérieur d'elle-même, pour créer une sorte de boucle).

Posté : 08 juin 2007, 18:51
par CoYaN
Bon ok la solution me parrait parfaite pour réduire le code php et de l'optimiser.
Mais postant mon message sur Php Débutant, serait-il possible d'avoir plus d'aide car côté classe, fonction, si je savait faire cette solution je pense que je l'aurai déjà créée.

Peux-tu me coder un exemple, car là je ne vois pas du tout.

Quelqu'un a une solution sur les lectures des fichiers ?

Mercid'avance

Posté : 08 juin 2007, 19:09
par Klomac
Comme tu travailles en PHP4 on va se contenter d'une fonction.
function recursivedir ($path) //On crée notre fonction destinée à renvoyer un tableau contenant la liste de tous les fichiers présents dans le dossier et les sous-dossiers
{
   $files = array(); //On initialise le tableau à retourner

   if (is_dir($path) AND is_readable($path)) //On vérifie que le dossier en est un et qu'il est accessible en lecture
   {
      $dir = opendir($path); //On ouvre le dossier

      while (($file = readdir($dir)) !== FALSE) //On passe en revue les éléments présents dans le dossier
      {
         if ($file != '.' AND $file != '..') //On ne compte pas le . et .. (dossier courant et dossier parent)
         {
            if (is_dir($path.'/'.$file)) //Si l'élément est un dossier, on fait appel à la fonction sur celui-ci et on greffe le tableau obtenu à celui qu'on crée actuellement avec array_merge()
            {
               $files = array_merge($files, recursivedir($path.'/'.$file));
            }
            else
            {
               array_push($files,$file); //Si c'est un fichier, on l'ajoute simplement au tableau
            }
         }
      }
      
      closedir($path); //On ferme le dossier
   }

   return $files; //On retourne le tableau
}

$files = recursivedir('/mondossier'); //On appelle la fonction pour récupérer un tableau contenant la liste de tous les fichiers

foreach ($files AS $file) //On passe en revue les éléments du tableau
{
   //Ton code
}
J'ai pris le temps de commenter l'exemple, prends le temps de le comprendre :) Merci

Posté : 09 juin 2007, 14:57
par CoYaN
Merci bien, je vais détailler ceci en profondeur, afin de comprendre le fonctionnement.

Personne a d'autre solution pour le lecture de mes caractères bizare sur doc et xls.

Merci