|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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
SURCHARGE PHP, ARRAYLIST PHP, ARRAYMAP PHP, DEBOGAGE, DBMANAGER, DESSIN PHP, ETC... (PHP 5)Implémentation de :
- Surcharge de méthodes (grâce à un simple héritage)
- Arraylist et Arraymap avec Itérateur (+ une interface list et map pour ... SURCHARGE PHP, ARRAYLIST PHP, ARRAYMAP PHP, DEBOGAGE, DBMANA...
par DijxDreaM
Sources en rapport avec celle ci
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
Petit pb en PHP, iniatiliser une variable dans une liste deroulante [ par dadoudamien ]
Bonjour,JE galère un peu.J'essaye de mettre a jour dynamiquement la variable $qte666, avec une liste déroulante.voici le tronche de mon code (c juste
Quun pe maidez a faire un forum le plus simple possible [ par Metal Xwarrior ]
qqun pouais maidez a faire un simple forum sans font juste avec des lien sans cooki ni session ex:nick.php-->page du psuedo annonymeliste.php?p=1--
Recuperer les valeurs d'une liste [ par mojito84 ]
bonjour,j'ai un pb pour recuperer les valeurs contenu dans une liste de selection.J'ai une premiere liste que je construit a l'aide d'une requete mysq
Recuperer les valeurs d'une liste de selection [ par mojito84 ]
bonjour,J'ai un pb pour recuperer les valeurs contenu dans une liste de selection.J'ai une premiere liste construite a partir d'une requete mysql, et
liste déroulante, php, sql [ par gypsi3000 ]
Je souhaiterai faire afficher une liste d'adresse web répertoriée dans une base de données depuis un menu déroulant qui correspond aux thèmes identifi
Listes dynamiques. [ par Jouban ]
Bonjour à tous!J'utilise des listes dynamiques avec utilisation d'une BD.Le principe est la consultation de noms (présents dans la base) en fonction d
Checkbox [ par tritum ]
TRITUMBonjour; Pour résumer, j'ai un formulaire avec une liste de checkbox, le choix de plusieurs checbox devra engendrer une autre liste de checkbox
liste mois en cours [ par ASPerix ]
Bonjour,Voila g une liste déroulante;<select name=mois> <option value=1>Janvier</option><option value=2>Février</option>
texte en survol (tooltip) sur une liste [ par panikunik ]
Salut, j'affiche une liste de noms de fichiers dans un <select>.Je voudrais pouvoir afficher l'adresse complète de mon fichier quand je met la s
|
Téléchargements
Logiciels à télécharger sur le même thème :
|