1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?php
function getdir($Connexion,$currentdirectory) {
$ftp_rawlist = ftp_rawlist($Connexion, $currentdirectory); // permet d'obtenir une liste détaillée des fichiers du répertoire
foreach ($ftp_rawlist as $v) { // on découpe la chaine obtenue
$info = array();
$vinfo = preg_split("/[\s]+/", $v, 9);
if ($vinfo[0] !== "total") {
$info['chmod'] = $vinfo[0];
$info['num'] = $vinfo[1];
$info['owner'] = $vinfo[2];
$info['group'] = $vinfo[3];
$info['size'] = $vinfo[4];
$info['month'] = $vinfo[5];
$info['day'] = $vinfo[6];
$info['time'] = $vinfo[7];
$info['name'] = $vinfo[8];
$rawlist[$info['name']] = $info;
}
}
$dir = array(); // création d'un tableau de dossier
foreach ($rawlist as $k => $v) {
// Test pour savoir s'il s'agit d"un dossier
if ($v['chmod']{0} == "d") {
$dir[$k] = $v;
}
}
$i=0;
// Parcours des différents dossiers contenus dans le répertoire courant
foreach ($dir as $dirname => $dirinfo) {
$nb=sizeof($dir); // nombre de dossier du tableau
$nb=$nb-2; // on enlève le dossier nommé "." et ".."
$i=$i+1;
if($i>2){ // ne prends pas en compte les deux dossiers ignorés précédemment
echo '===>' ."[ $dirname ] " .'(' .$nb .')' .'<br />';
$currentdirectory=$currentdirectory .'/' .$dirname; // on modifie le répertoire courant
@getdir($Connexion,$currentdirectory); // appel récursif avec le nouveau répertoire à analyser en paramètre
}
}
}
?> |
Partager