5/5 (7 avis)
Vue 5 510 fois - Téléchargée 602 fois
<?php /* By @rboretom le 09/2006*/ class DirectoryFile{ var $SUPPORTED_EXT=array(); var $files_not_supported=array(); var $var_tri="tri"; //constructeur function DirectoryFile($supported_ext="",$exlude=""){ //les extension supporter $this->SUPPORTED_EXT=$supported_ext; //exclu les fichier et/ou dossiers $this->files_not_supported=$exlude; } function Search($dir=""){ if (is_dir($dir)) { if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { $parts = explode(".",$file); //separe l'extension $ext = $parts[count($parts)-1]; //remplace les tiret par des espace $tiret = str_replace('_', ' ', $file); //enleve l'extension $string = str_replace('.'.$ext, '', $tiret); // Si le nom du fichier comporte des espaces, on l'encode ! $string_space= str_replace(' ', '%20', $file); $chemin= str_replace(' ', '%20', $dir); //converti l'extension en minuscule $ext =strtolower($ext); if($file != "." && $file != ".."){ //cache les fichiers a exclure if(!isset($this->files_not_supported[$file])){ // c'est un dossier if(count($parts)===1){ $type="dir"; //construit le tableau $Files[]=array( 'name' =>$file, 'namespace' =>$string_space, 'stringname'=>$string, 'ext'=>'', 'path'=>$chemin, 'type'=>$type ); } //c'est un fichier if(count($parts)===2){ $type="files"; /* affiche uniquement les fichiers ayant la bonne extension */ if(isset($this->SUPPORTED_EXT[$ext])){ //construit le tableau $Files[]=array( 'name' =>$file, 'namespace' =>$string_space, 'stringname'=>strtolower($string), 'ext'=>strtolower($ext), 'path'=>$chemin, 'type'=>$type); } } } } } } } if(isset($Files)){ return$Files; } } //separe les fichiers et dossiers function Liste_files($Files,$type,$tri="name"){ if(isset($Files)){ foreach ($Files as $ligneDuTableau){ if($ligneDuTableau["type"]===$type){ //construit le tableau $ligne $ligne[]=array( 'name' =>$ligneDuTableau["name"], 'namespace' =>$ligneDuTableau["namespace"], 'stringname'=>$ligneDuTableau["stringname"], 'ext'=>$ligneDuTableau["ext"], 'path'=>$ligneDuTableau["path"], 'type'=>$ligneDuTableau["type"] ); $sort[]=$ligneDuTableau[$tri]; } } //verrifie si le tableau existe if(isset($ligne)){ //tri les resultats array_multisort($sort, SORT_STRING, $ligne); return$ligne;} } } /* Melange les 2 tableaux(dossiers/fichiers) */ function file_merge($Dossier_a_explorer){ $dir=$this->Search($Dossier_a_explorer); /* tri par default: par nom pour trier par extension ajoutez:&tri=ext dans l'url et recuper avec $_GET['tri'] */ if(isset($_GET[$this->var_tri])){ //liste les fichiers $liste_file=$this->Liste_files($dir,"files",$_GET[$this->var_tri]); } else{ $liste_file=$this->Liste_files($dir,"files","name"); } //liste les dossier $liste_doss=$this->Liste_files($dir,"dir"); //melange les 2 tableaux // merci NKWolf if(!is_array($liste_doss)){ $liste_doss = array($liste_doss); } if(!is_array($liste_file)){ $liste_file = array($liste_file); } $result = array_merge_recursive($liste_doss, $liste_file); return $result;} //--fin de la class } ?>
11 janv. 2007 à 14:58
if(!is_array($liste_doss)){ $liste_doss = array($liste_doss); }
if(!is_array($liste_file)){ $liste_file = array($liste_file); }
//melange les 2 tableaux
$result = array_merge_recursive($liste_doss, $liste_file);
return $result;
Car il est logique qui si l'un des 2 tableau n'en est pas un il ne sais pas les mélanger ;)
11 janv. 2007 à 14:49
//melange les 2 tableaux
if(!is_array($liste_doss))
{
$liste_doss = array($liste_doss);
}
$result = array_merge_recursive($liste_doss, $liste_file);
return $result;
Voilà qui résou le problème définitivement
11 janv. 2007 à 14:45
11 janv. 2007 à 14:40
Warning: array_merge_recursive() [function.array-merge-recursive]: Argument #1 is not an array in http://....../www/listefiles/Class_Directory.php on line 110
par défaut apparament $liste_doss n'est pas considérer comme un tableau ptet le définir en array() plus tôt dans le script no ?
14 sept. 2006 à 14:33
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.