begin process at 2012 05 27 21:22:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > FONCTION _SCANDIR UTF8

FONCTION _SCANDIR UTF8


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :fichier, répertoire, charset, caractère, utf8 Niveau :Débutant Date de création :20/11/2010 Date de mise à jour :04/02/2011 15:53:07 Vu :2 114

Auteur : LDDL

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Récupère le contenu d'un répertoire, avec options de tris croissant-décr., filtre extension et conversion jeu de caractères.

Source

  • <?PHP
  • /**
  • * récupère le contenu d un repertoire v2.6
  • *
  • * array _scandir( $path, $option, $encodage )
  • *
  • * option 'a' : tri croissant
  • * option 'z' : tri décroissant
  • * option '.xxx' : filtre uniquement cette extention
  • * option '.' filtre les fichiers sans extention
  • *
  • * encodage UTF8 | ISO : (convertion de l'un vers l'autre) optionnel
  • *
  • * retourne false en cas d echec.
  • * retourne un tableau array( 'd'=>repertoires, 'f'=>fichiers )
  • *
  • */
  • define( 'UTF8', 1, true );
  • define( 'ISO', 2, true );
  • function _scandir( $path = NULL , $option = NULL, $encodage = NULL ){
  • if( is_null( $path ) || empty( $path ) ){
  • $path = dirname( __FILE__ );
  • }
  • $path = rtrim( $path, '\\' );
  • $path = rtrim( $path, '/' );
  • $path = $path.'/';
  • $scan = @scandir( $path );
  • if( $scan == false ){
  • $scan = @scandir( utf8_decode( $path ) );
  • }
  • if( $scan == false ){
  • $scan = @scandir( utf8_encode( $path ) );
  • }
  • if( $scan == false ){
  • trigger_error( '* _scandir => path error *', E_USER_WARNING );
  • return false;
  • }
  • unset( $scan[ array_search( '.', $scan ) ] );
  • unset( $scan[ array_search( '..', $scan ) ] );
  • $rep = array( 'd'=>array(), 'f'=>array() );
  • $option = strtolower( $option );
  • $ext = NULL;
  • if( strlen( $option ) > 1 || $option == '.' ){
  • $ext = trim( $option, '.' ) ;
  • $option = 1;
  • }
  • foreach( $scan as $k=>$el ){
  • switch( $encodage ){
  • case 1:
  • $el = utf8_encode( $el );
  • break;
  • case 2:
  • $el = utf8_decode( $el );
  • }
  • if( is_dir( $path.$el ) ){
  • array_push( $rep['d'], $el );
  • }else{
  • if( $ext == NULL && $option != 1 ){
  • array_push( $rep['f'], $el );
  • }
  • else{
  • if( $ext == pathinfo( $path.strtolower( $el ) , PATHINFO_EXTENSION ) ){
  • array_push( $rep['f'], $el );
  • }
  • }
  • }
  • }
  • switch( $option ){
  • case 'a':
  • natcasesort( $rep['d'] );
  • natcasesort( $rep['f'] );
  • break;
  • case 'z':
  • natcasesort( $rep['d'] );
  • natcasesort( $rep['f'] );
  • $rep['d'] = array_reverse( $rep['d'] );
  • $rep['f'] = array_reverse( $rep['f'] );
  • }
  • if( !isset( $rep['d'][0] ) || $option == 1 ){
  • $rep['d'] = NULL;
  • }
  • if( !isset( $rep['f'][0] ) ){
  • $rep['f'] = NULL;
  • }
  • return $rep;
  • }
  • ?>
<?PHP
/** 
	* récupère le contenu d un repertoire v2.6
	*
	* array _scandir( $path, $option, $encodage ) 
	* 
	* option 'a' : tri croissant
	* option 'z' : tri décroissant 
	* option '.xxx' : filtre uniquement cette extention
	* option '.' filtre les fichiers sans extention 
	*
	* encodage UTF8 | ISO : (convertion de l'un vers l'autre) optionnel
	*
	* retourne false en cas d echec.
	* retourne un tableau array( 'd'=>repertoires, 'f'=>fichiers ) 
	*
	*/
define( 'UTF8', 1, true );
define( 'ISO', 2, true );

function _scandir( $path = NULL , $option = NULL, $encodage = NULL ){
	
	if( is_null( $path ) || empty( $path ) ){
		$path = dirname( __FILE__ );
	}
			
	$path = rtrim( $path, '\\' );
	$path = rtrim( $path, '/' );
	$path = $path.'/';
	
	$scan = @scandir( $path );

	
	if( $scan == false ){
		$scan = @scandir( utf8_decode( $path ) );
	}
	if( $scan == false ){
		$scan = @scandir( utf8_encode( $path ) );
	}		
	if( $scan == false ){		
		trigger_error( '* _scandir => path error *', E_USER_WARNING );
		return false;
	}	
	
	unset( $scan[ array_search( '.', $scan ) ] );
	unset( $scan[ array_search( '..', $scan ) ] );	
	
	$rep = array( 'd'=>array(), 'f'=>array() ); 

	$option = strtolower( $option );
	$ext = NULL;
	
	if( strlen( $option ) > 1 || $option == '.' ){
		$ext = trim( $option, '.' ) ;
		$option = 1;
	}
	
	foreach( $scan as $k=>$el ){	
				
		switch( $encodage ){
			case 1:
				$el = utf8_encode( $el );
				break;
			case 2:
				$el = utf8_decode( $el );
		}		
		 
		if( is_dir( $path.$el ) ){
			array_push( $rep['d'], $el ); 
		}else{
			
			if( $ext == NULL && $option != 1 ){
				array_push( $rep['f'], $el );
			}
			else{
				if( $ext == pathinfo( $path.strtolower( $el ) , PATHINFO_EXTENSION ) ){
					array_push( $rep['f'], $el );
				}		
			}
		}

	}
	
	switch( $option ){
		case 'a':
			natcasesort( $rep['d'] );
			natcasesort( $rep['f'] );
			break;
		case 'z':
			natcasesort( $rep['d'] );
			natcasesort( $rep['f'] );
			$rep['d'] = array_reverse( $rep['d'] );
			$rep['f'] = array_reverse( $rep['f'] );
	}
	
	if( !isset( $rep['d'][0] ) || $option == 1 ){
		$rep['d'] = NULL;
	}
	if( !isset( $rep['f'][0] ) ){
		$rep['f'] = NULL;
	}
	
	return $rep;
}
?>



 Historique

24 novembre 2010 20:39:06 :
correctif de la prise en charge d'aucune extension
04 février 2011 15:53:07 :
refonte fonctionnalités

 Sources du même auteur

Source avec Zip CLASSE TABLE HTML DYNAMIQUE

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

 Sources en rapport avec celle ci

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
PARCOURIR UN RÉPERTOIRE ET SES SOUS SOUS SOUS... RÉPERTOIRE ... par micmonay
Source avec Zip PHPEXPLORER 2.00 BY DOTWIZARD512 par wizard512

Commentaires et avis

Commentaire de neigedhiver le 20/11/2010 10:58:58

Salut,

Ce qui est dommage c'est qu'utiliser cette fonction revient à parcourir 2 fois le répertoire. L'utilisation d'un itérateur permettrait d'éviter ça.

Commentaire de inwebo le 21/11/2010 11:45:44

Salut,

Connais tu  ceci : http://fr.php.net/manual/fr/function.glob.php ?

(PHP 4 >= 4.3.0, PHP 5) glob - Recherche des chemins qui vérifient un masque.

Commentaire de neigedhiver le 21/11/2010 11:52:28

glob() ne permet pas de trier.
Bon, cette fonction là non plus... mais scandir() le permet.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

déplacer un fichier dans un autre répertoire [ par babybutt ] bonjour,j'aimerais déplacer un fichier dans un autre répertoire que celui du server.je m'explique, j'ai un serveur apache et lorsque j'upload j'aimera Trier Chaines de caractère dans un fichier texte [ par jdaviaud ] Salut à tous :)Voila, j'aurais besoin d'un peu d'aide car je vois pas trop comment m'y prendre :J'ai un motur de cherche qui stoque tous les termes de Copier un fichier [ par fredo35m ] Bonjour,J'essaye de copier un fichier s&#233;lectionn&#233; dans un autre r&#233;pertoire mais cela semble ne pas fonctionner !! me manque-t-il quelqu effacer un fichier dans un répertoire distant [ par Fabrizio61 ] Salut &#224; tous.Peut-on effacer un fichier dans un r&#233;pertoire distant (site distant) ?D'avance merci. sous-repertoire fichier ............ [ par TRASH52 ] TRASH52bon je vous met le code!En fait, je voudrais que mon programme a partir d'u ftp_get php [ par CC24 ] bonjour à tous !est-ce que l'un d'entre vous pourrait m'indiquer la syntaxe à utiliser pour télécharger un fichier situé dans un sous-répertoire du ré Listage d'un Répertoire et de ses sous repertoires dans un fichier XML configurable [ par the_knight ] Fid&#233;le &#224; mon adage ( ci joint) je cherche depuis peu une solution ( ayant quelques lacunes dans cette partie du c&#244;t&#233; obscur du cod lister les fichier d'un répertoire [ par conradfrance ] salut a tousVoila j'ai cherch&#233; avant de poser la question mais je ne l'ai pas trouv&#233; (ou mal peut etre si elle y est)Je cherche a savoir si problème fichier, chaine de caractère [ par lenneth666 ] Bonjouralors je suis ultra débutant en php.J'aimerais ouvrir un fichier .html pour recuperer quelques partie du code source entre certaines balises.L' probleme avec move_uploaded_file et UTF8 [ par DJTIME ] Voici un bout de code pris du net que j'ai utilisé pour l'upload de fichier sur mon site (qui n'est pas encore en ligne vu qu'il marche po!)Bref!! ca


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales