Fonction _scandir utf8

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 270 fois - Téléchargée 16 fois

Contenu du snippet

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 / Exemple :


<?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; } ?>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
glob() ne permet pas de trier.
Bon, cette fonction là non plus... mais scandir() le permet.
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

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.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
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.

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.

Du même auteur (cs_LDDL)