Class DirectoryFile:
- Liste des dossiers et/ou des fichiers et les ajoutes dans un tableau (array);
- Les exemple montre comment manipuler les résultats dans des tableaux.
Tester avec: PHP Version 4.4.1RC2-dev.
Développer sur : Easy php 1.8 register_globals=off.
---------------------------
- Lancez le index.php avec votre navigateur pour voir les exemples et les sources.
- Possibilité d?exclure certain fichier ou dossier.
- choix des extensions a affiché.
- Accepte les extensions en majuscule et minuscule (indiquez les en minuscule)
- Encode les noms de fichier pour les passer en paramètre via l?url.
- Supprime les extensions et les _ dans les nom de fichier pour un affichage propre dans les liens (mon_fichier.html => mon fichier).
Source / Exemple :
<?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
}
?>
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.