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.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager