Maison  >  Article  >  développement back-end  >  Comment copier le contenu d’un répertoire à l’aide de PHP ?

Comment copier le contenu d’un répertoire à l’aide de PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 13:49:01959parcourir

How to Copy Directory Contents Using PHP?

Copier le contenu du répertoire à l'aide de PHP

Problème d'implémentation : caractères génériques non reconnus

La commande copy ("old_location/*.*", new_location/ ") a échoué car les caractères génériques (*.*) ne sont pas reconnus directement par la fonction copy().

Fonction de copie récursive

Pour copier le contenu d'un répertoire entier, y compris les sous-répertoires et les fichiers, une fonction de copie récursive est nécessaire. Voici un exemple :

<code class="php">function recurseCopy(string $sourceDirectory, string $destinationDirectory, string $childFolder = ''): void 
{
    $directory = opendir($sourceDirectory);

    if (is_dir($destinationDirectory) === false) {
        mkdir($destinationDirectory);
    }

    if ($childFolder !== '') {
        if (is_dir("$destinationDirectory/$childFolder") === false) {
            mkdir("$destinationDirectory/$childFolder");
        }

        while (($file = readdir($directory)) !== false) {
            if ($file === '.' || $file === '..') {
                continue;
            }

            if (is_dir("$sourceDirectory/$file") === true) {
                recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file");
            } else {
                copy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file");
            }
        }

        closedir($directory);

        return;
    }

    while (($file = readdir($directory)) !== false) {
        if ($file === '.' || $file === '..') {
            continue;
        }

        if (is_dir("$sourceDirectory/$file") === true) {
            recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$file");
        } 
        else {
            copy("$sourceDirectory/$file", "$destinationDirectory/$file");
        }
    }

    closedir($directory);
}</code>

Utilisation

Pour utiliser cette fonction, appelez-la avec le répertoire source, le répertoire de destination et le sous-dossier facultatif (si nécessaire).

<code class="php">recurseCopy("old_location", "new_location");</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn