Bonjour
Je cherche à faire une copie récursive ( repertoire , ss-repertoire, ss-ss-repertoire ... ) d'un repertoire donné coté serveur dont je connais pas à l'avance la profondeur ...
Merci pour votre aide.
Bonjour
Je cherche à faire une copie récursive ( repertoire , ss-repertoire, ss-ss-repertoire ... ) d'un repertoire donné coté serveur dont je connais pas à l'avance la profondeur ...
Merci pour votre aide.
glob
en utililsant GLOB_ONLYDIR pour récupérer tout tes repertoire
Et ensuite tu fais un glob tu chaque repertoire et tu copie.
Voila.
# La rubrique Web
# Javascript / PHP / Flash / (X)HTML / CSS
# Les FAQs
# Les Sources
# Mon profil LinkedIn
Bonjour et merci pour cet élément de réponse.
Je ne connaissais pas la fonction glob ...![]()
Mais sauf mauvaise utilisation de ma part elle ne me retourne que les repertoires de premier niveau !!!![]()
Du coup il faut boucler autant de fois qu'il y a de niveaux et je me heurte de nouveau à ma "récursivité à dimension variable" ...
![]()
Soit tu boucles, soit tu fais de la récursion, il est très rare d'avoir à faire les 2Envoyé par hisy
![]()
Et pour la récursivité, tu n'as heureusement pas besoin de connaître la profondeur de ton arborescence (en fait, tu n'en as pas besoin non plus si tu fais des boucles : toute procédure récursive est transformable en procédure itérative mais bon, c'est un peu plus lourd en général...)
Bref, sans doute quelque chose d'assez basique comme
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 function browseDir( $dir ) { $hdir = opendir( $dir ); while ( $item = readdir( $hdir ) ) { if ( is_dir( $item ) ) { // Répertoire => récursion /*traitements*/ browseDir( $item ); /*traitements*/ } else { // Fichier => pas de récursion /*traitements*/ } } closedir( $hdir ); }
Merci à Herode qui m'a fait 99% du taff![]()
J'en suis arrivé à ça :
que J'appelle en faisant :
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 class CopieRecursive{ var $copie; function copie( $dir, $dirDest ) { mkdir($dirDest); $hdir = opendir( $dir ); while ( $item = readdir( $hdir ) ) { if($item=="." | $item=="..") continue; if ( is_dir( $dir.'/'.$item ) ) { // Répertoire => récursion /*traitements*/ $this->copie( $dir.'/'.$item, $dirDest.'/'.$item ); } else { copy($dir.'/'.$item,$dirDest.'/'.$item); } } closedir( $hdir ); } }
$sources étant un repertoire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $CopieRecursive=new CopieRecursive(); $CopieRecursive->copie($sources,$destination);
Et ça marche![]()
Partager