Accueil > > > CLASS DIRECTORYFILE LISTE DES DOSSIERS ET DES FICHIERS
CLASS DIRECTORYFILE LISTE DES DOSSIERS ET DES FICHIERS
Information sur la source
Description
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
- <?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
- }
- ?>
-
<?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
}
?>
Historique
- 14 septembre 2006 14:24:11 :
- remplacement des ereg_replace par des str_replace.
déclaration du $_GET['tri'].
déclarations de propriétés.
- 23 mai 2007 17:29:38 :
-
ajout des 2 ligne de NKWolf ;-)merci
if(!is_array($liste_doss)){ $liste_doss = array($liste_doss); }
if(!is_array($liste_file)){ $liste_file = array($liste_file); }
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
opendir et readdir sur la machine [ par mageonyme ]
Bonjour,Je voudrais que les utilisateurs de mon site puissent sélectionner un dossier qu'ils ont sur leur machine pour que l'ensemble du contenu soit
problème avec opendir et readdir [ par boubeuch1 ]
je fais la partie administrateur d'un site, je souhaite faire en sorte d'accéder à différents album photo contenu dans un dossier: <?php $dossierphoto
Liste déroulante pour filtrer résultats issus d'une table sql [ par loonasia41 ]
Bonjour à tous, Je suis en train de créer une base de données où j'affiche mes résultats dans un tableau grâce à php. Ma base de données contient po
visualiser la liste des connectés en php [ par malia01 ]
je suis entraine de dévelloper un site web en PHP dans laquel chaque type d'utilisateur techniciens expert administrateur possédent un mot de passe e
Liste déroulante en php [ par Nadyaa ]
[i]Bonjour à tous,je travaille sur une application de gestion de stock et je dois faire 4 listes déroulantes en PHP liées entre elles... J'ai déjà fa
liste des dates entre deux date [ par nitho ]
Bonjour à tous, Dites j'ai un problème de requête MySQL, j'ai deux champs qui me donne une date de début et une date de fin, j'aimerais avoir la liste
lister un repertoire d'une liste deroulante[php,js,html] [ par joinfo ]
Bonjour tous le monde j'ai un probleme si vous pouvez aiser ,j'ai deja fait la fonction pour lister un repertoire mais le probleme je veux lister le c
lister un repertoire d'une liste deroulante[php,js,html] [ par joinfo ]
Bonjour je veux lister le contenu d'un repertoire dans une liste deroulante pour que l'utilisateur peux deplacer un fichier vers le repertoire selecti
Navigation entre les n - uplets [ par julsac ]
Bonjour, Je suis actuellement en train de développer un petit outil pour mon compte perso. J'ai une liste de film avec un lien vers le descriptif du
liste déroulante [ par cy4nur3 ]
Bonjour, comment puis je faire pour qu'une liste déroulante m'affiche le nombre compris entre 1 et n sachant que ce n a été renseigné dans une BDD
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GOOGLE MAPGOOGLE MAP par fatmanajjar
Cliquez pour lire la suite par fatmanajjar
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|