English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Analisi delle directory PHP

In questo tutorial, imparerai come utilizzare PHP per gestire directory o cartelle.

Utilizzo delle directory in PHP

Nell'ultimo capitolo, hai imparato come utilizzare i file in PHP. Allo stesso modo, PHP ti permette di utilizzare le directory sul file system, ad esempio, puoi aprire una directory e leggere il suo contenuto, creare o eliminare una directory, elencare tutti i file nella directory, ecc.

Crea una nuova directory

Puoi chiamare la funzione PHP mkdir() con il percorso e il nome della directory da creare per creare una nuova directory vuota, come nell'esempio seguente:

<?php
//Percorso della directory
$dir = "testdir";
 
//Controlla se la directory esiste
if(!file_exists($dir)){
    //Tentativo di creare la directory
    if(mkdir($dir)){
        echo "Creazione della directory riuscita.";
    } else {
        echo "Errore: impossibile creare la directory.";
    }
} else {
    echo "Errore: la directory esiste già.";
}
?>

Per far funzionare la funzione mkdir(), il percorso del percorso del dir di destinazione del parametro deve già esistere, ad esempio, se specifichi il percorso del percorso del dir di destinazione testdir/subdir è testdir In caso contrario, PHP genererà un errore.

Copia un file da una posizione a un'altra

Puoi copiare un file da una posizione a un'altra chiamando la funzione PHP copy() con il percorso di origine e di destinazione del file come parametri. Se il file di destinazione esiste già, verrà sovrascritto. Ecco un esempio di come creare una copia del file "example.txt" nella cartella di backup.

<?php
//Percorso del file sorgente
$file = "example.txt";
 
//Percorso del file di destinazione
$newfile = "backup/example.txt";
 
//Controlla se il file esiste
if(file_exists($file)){
    //Tentativo di copiare il file
    if(copy($file, $newfile)){
        echo "Copia del file riuscita.";
    } else {
        echo "Errore: impossibile copiare il file.";
    }
} else {
    echo "Errore: il file non esiste.";
}
?>

Per rendere questo esempio funzionante, deve già esistereBackupIl percorso della directory di destinazione e il file sorgente “example.txt”. Altrimenti, PHP genererà un errore.

Elenca tutti i file nella directory

Puoi elencare i file e le directory all'interno di un percorso specifico utilizzando la funzione PHP scandir().

Ora, creeremo una funzione personalizzata che utilizzerà PHP per elencare ricorsivamente tutti i file nella directory. Questo script sarà molto utile se stai utilizzando una struttura di directory profondamente annidata.

<?php
//定义一个函数以输出目录中的文件
function outputFiles($path){
    // verifica se la directory esiste
    if(file_exists($path) && is_dir($path)){
        //扫描此目录中的文件
        $result = scandir($path);
        
        // 过滤掉当前的(.)和父目录(..)
        $files = array_diff($result, array('.', '..'));
        
        if(count($files) > 0){
            //循环遍历重新调谐的数组
            foreach($files as $file){
                if(is_file("$path/$file")){
                    //显示文件名
                    echo $file . "<br>";
                } else if(is_dir("$path/$file")){
                    // se il percorso è trovato, la funzione viene chiamata ricorsivamente
                    outputFiles("$path/$file");
                }
            }
        } else {
            echo "errore: non è possibile trovare il file nella directory.";
        }
    } else {
        echo "errore: la directory non esiste.";
    }
}
 
// chiamata alla funzione
outputFiles("mydir");
?>		

Elenca tutti i file di un tipo specifico

Quando si gestisce la struttura dei directory e dei file, a volte è necessario cercare determinati tipi di file nella directory, come elencare solo i file .text o .png, ecc. Puoi farlo facilmente con la funzione glob() di PHP, che corrisponde ai file in base a uno schema.

Nell'esempio di codice PHP qui sotto, viene cercato documents Elenca le directory e tutti i file con estensione .text. Non cerca nelle sottodirectory.

<?php
/* Cerca la directory e esplora in modo ciclico, restituendo un array contenente i file che corrispondono */
foreach(glob("documents/*.txt") as $file){
    echo basename($file) . " (dimensione: " . filesize($file) . " byte)" . "<br>";
}
?>

La funzione glob() può anche essere utilizzata per cercare tutti i file in una directory o nei suoi sottodirectory. Nell'esempio definito, la funzione elencherà ricorsivamente tutti i file nella directory, come fatto nell'esempio precedente con la funzione scandir().

<?php
// definire la funzione per visualizzare i file nella directory
function outputFiles($path){
    // verifica se la directory esiste
    if(file_exists($path) && is_dir($path)){
        // ricerca i file nella directory
        $files = glob($path."/*");
        if(count($files) > 0){
            // esplora l'array riformattato
            foreach($files as $file){
                if(is_file("$file")){
                    // visualizza solo il nome del file
                    echo basename($file) . "<br>";
                } else if(is_dir("$file")){
                    // se il percorso è trovato, la funzione viene chiamata ricorsivamente
                    outputFiles("$file");
                }
            }
        } else {
            echo "errore: non è possibile trovare il file in directory.";
        }
    } else {
        echo "errore: la directory non esiste.";
    }
}
 
// chiamata alla funzione
outputFiles("mydir");
?>