Files e cartelle: dir

Gli argomenti di questa pagina

  • La funzione dir()
  • Le funzioni personali per dir()
  • Richiamare le funzioni personali

La funzione dir()

La funzione dir() apre l'handle della directory, ossia un canale che contiene tre metodi chiamati read(), rewind() e close().
Questa funzione restituisce un flusso di directory in caso di successo e FALSE e un errore in caso di fallimento. È possibile nascondere l'output degli errori con l'aggiunta di un '@' davanti al nome della funzione.

La sintassi è: dir(directory)
directory (obbligatoria) indica la cartella dove cercare

Le funzioni personali per dir()

Quelli che seguono sono alcuni esempi di utilizzo della funzione dir():

  1. dir_list_dir(): elenca le sole cartelle presenti nella cartella indicata
  2. files_list_dir(): elenca i soli files presenti nella cartella
  3. full_list_dir(): elenca tutto il contenuto della cartella
  4. all_list_dir(): elenca tutto il contenuto della cartella ma raggruppa prima tutte le cartelle e poi i files
  5. filtered_list_dir(): elenca i files filtrandoli per le estensioni desiderate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
function dir_list_dir($directory) {
    
$d dir($directory);
    
$d->handle;
    
$d->path;
    while (
false !== ($entry $d->read())) {
        if (
is_dir($directory.$entry)) {
            if (
$entry != "." && $entry != "..") {
                
$dir_list[] = $entry;
            }
        }
    }
    
$d->close();
    return 
$dir_list;
}
//    ======================================================================
function files_list_dir($directory) {
    
$d dir($directory);
    
$d->handle;
    
$d->path;
    while (
false !== ($entry $d->read())) {
            if (
is_file($directory.$entry)) {
        if (
$entry != "." && $entry != "..") {
                
$files_list[] = $entry;
            }
        }
    }
    
$d->close();
    return 
$files_list;
}
//    ======================================================================
function full_list_dir($directory) {
    
$d dir($directory);
    
$d->handle;
    
$d->path;
    while (
false !== ($entry $d->read())) {
        if (
$entry != "." && $entry != "..") {
            
$files_list[] = $entry;
        }
    }
    
$d->close();
    return 
$files_list;
}
//    ======================================================================
function all_list_dir($directory){
    
$d dir($directory);
    
$d->handle;
    
$d->path;
    while (
false !== ($entry $d->read())) {
        if (
$entry != "." && $entry != "..") {
            if (
is_file($directory.$entry)) {
                
$files_list[] = $entry;
            } elseif (
is_dir($directory.$entry)) {
                
$dir_list[] = $entry;
            }
        }
    }
    
$d->close();
    
$result array_merge($dir_list$files_list);
    return 
$result;
}
//    ======================================================================
function filtered_list_dir($directory$extensions) {
    
$d dir($directory);
    
$d->handle;
    
$d->path;
    while (
false !== ($entry $d->read())) {
        
$ext info($directory.$entry);
        if (
in_array ($ext$extensions)) {
            
$files_list[] = $entry;
        }
    }
    
$d->close();
    return 
$files_list;
}

?>

Richiamare le funzioni personali

Nel prossimo riquadro si vedranno alcuni modi per riferirsi a queste funzioni:

1
2
3
4
5
6
7
8
9
10
11
<?php
$extensions 
= array ("php""txt""gif");        //    serve per raccogliere i files filtrati
$source_folder "folder_sample/";                //    questa è una sottocartella della cartella in cui si sta lavorando
//$source_folder = "";                            //    questa è la cartella di lavoro
//$source_folder = "../../../";                    //    per andare alla radice del sito
$array_dir dir_list_dir($source_folder);            //    legge le sottocartelle della cartella indicata
$array_files files_list_dir($source_folder);        //    legge i files della cartella indicata
$array_full full_list_dir($source_folder);        //    legge tutti gli oggetti della cartella indicata
$array_full_list all_list_dir($source_folder);
$array_filtered_files filtered_list_dir($source_folder$extensions);
?>

Per visualizzare il risultato delle funzioni usiamo questo semplice ciclo FOR

1
2
3
4
5
<?php
for($i=0$i count($array); $i++) {
    echo 
$array[$i] . "<br />\n";
}
?>

Infine questo è il risultato di tutte le funzioni mostrate qui sopra:

Ecco una prova per la lettura di una cartella apri in popup

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum