Bonjour,
j'essaie de générer l'arborescence d'un ftp à l'aide des fonctions PHP. Pour cela j'utilise entre autre la fonction ftp_rawlist qui permet de donner une liste détaillée des fichiers du répertoire donné en paramètre.
J'ai créé une fonction (getdir($Connexion,$currentdirectory)) qui utilise cette fonction ftp_rawlist, trie les informations des différents dossiers dans un tableau. J'appelle à nouveau cette fonction de manière récursive pour chaque dossier.

Pour être plus parlant voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
}
}
}
?>


Comme il est possible de le voir avant de réappeller la fonction getdir je change le répertoire courant avec celui du dossier que l'on est en train de traiter(Ajout de '/' + nomdossier).
Le problème est que je ne vois pas comment revenir en arrière...
Il est possible que ma manière d'opérer ne sois vraiment pas la bonne..
Si vous pouvez me donner un petit coup de main n'hésitez pas !

Merci d'avance

Gab