Domanda

Ho un $bundle matrice che memorizza i nomi dei file e delle directory.

Sono in esecuzione attraverso l'array con un ciclo foreach e voglio spostare al loro interno di un altro elenco. Sto usando il metodo di ridenominazione, dunque, e funziona abbastanza bene con solo file.

Tuttavia directory con altri file in là non rispondono al metodo rename().

$folder =  'files';
foreach ($bundle as $value) {
    $ext = pathinfo($value, PATHINFO_EXTENSION);
    if ($ext != "") { //if $value has no suffix it's a fil
        rename(PATH . '/' .$value, $folder . '/' . $value);
    }

    if ($ext == "") { // it's a folder/directory
        //rename doesn't work for directories with contents
        //what method should i use here???
    }

}

So che il metodo pathinfo() non è il modo migliore per scoprire se si tratta di una directory o no, comunque per il mio piccolo progetto va bene. Ho solo bisogno di sapere come posso spostare qualsiasi cartella con tutti i suoi contenuti nella cartella "file".

Grazie per il vostro aiuto.

È stato utile?

Soluzione

Si dovrà ottenere tutti i nomi dei file in quella cartella utilizzando glob o scandir. Poi si dovrebbe ciclo attraverso di loro con la ridenominazione e spostarli.

L'altra opzione, se si ospita lo permette, è quello di utilizzare shell_exec e fare il mv per Linux o copy / xcopy per comando di Windows e spostare in quel modo. Se si sceglie il percorso exec, assicurarsi di garantire l'ingresso, ecc per evitare cose cattive accada.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top