RESSOURCES 
 
Liste des sous-répertoires d'un répertoire
Fourni par SQLI 3 février 2001
 
 

 

/**************************************************
*
* GetDirsList
* Laurent Lacroix, 03/02/2001 20:00
* 
* Récupère dans un tableau, la liste des sous répertoires d'un 
* répertoire, jusqu'à une profondeur spécifiée dans MaxDeep et 
* dont les noms respectent l'expression régulière DirRegEx
* 
* @param BasDir Nom complêt du répertoire à parcourir
* @param MaxDeep Profondeur maximale de répertoire à scanner
* @param Arr Le tableau dans lequel les noms des répertoires sont stockés
* @param DirRegEx Expression régulière que les répertoires doivent vérifier
* @return TRUE ou FALSE suivant le résultat d'exécution
*
* @see DelCarIf
*
**************************************************/

Function GetDirsList( $BasDir, $MaxDeep, &$Arr, $DirRegEx = "" )
{
 // Contrôler répertoire source
 $BasDir = DelCarIf( $BasDir, "/" );
 if( ! is_dir( $BasDir ) ) return "";
 //
 // Premier passage (pour trier à la fin du traitement)
 $bFirstPass = FALSE;
 //
 // Création du tableau de résultats
 if( ! is_array( $Arr ) ) {
  $Arr = array();
  $bFirstPass = TRUE;
 }
 //
 // Scanner répertoire source
 $BasDir .= "/";
 if ( ! ( $d = dir( $BasDir ) ) ) return "";
 while( $f = $d->read() ) {
  if ( $f == "" || $f == "." || $f == ".." ) continue;
  if ( ! is_dir( $BasDir . $f ) ) continue;
  if ( $DirRegEx != "" && ! ereg( $DirRegEx, $f ) ) continue;
  $Arr[] = $BasDir . $f . "/";
  //
  // Appel récursif
  if ( $MaxDeep != 0 ) {
   GetDirsList( $BasDir . $f, $MaxDeep - 1, $Arr, $DirRegEx );
  }
 }
 $d->Close();
 if( $bFirstPass ) ASort( $Arr );
 return TRUE;
}
 
Accueil | Haut de page