12 commenti php

Le operazioni che è possibile eseguire con le cartelle sono molteplici: in particolare creazione, lettura, verifica dell’esistenza, e non solo. Vediamo alcune delle funzioni che possono consentirci di eseguire tali operazioni.

 

 

LA FUNZIONE IS_DIR()

La funzione is_dir() verifica l'esistenza una cartella. Essa accetta come unico parametro una stringa corrispondente al percorso alla cartella (senza il simbolo / alla fine).

Restituisce un valore boleano, TRUE se la cartella esiste.

 

Esempio:

<?php
$cartella = 'cartella/sottocartella';
if(!is_dir($cartella))
   {
   echo 'La cartella indicata non esiste!';
   }
else
   {
   echo 'La cartella esiste!';
   }
?>

 

 

LE FUNZIONI OPENDIR(), READDIR(), CLOSEDIR()

Tali funzioni servono per aprire un cartella, leggerne il contenuto e chiuderla.

La funzione opendir() serve per aprire una cartella. Essa richiede come parametro una stringa indicante il percorso.
Restituisce come return l'identificativo della risorsa in caso di successo, altrimenti FALSE generando un errore di tipo warning.

La funzione readdir() serve per leggere il contenuto di una cartella. Essa richiede come parametro l'identificativo della risorsa ottenuto con opendir().
Tuttavia, essa richiede una specifica esecuzione per ogni file, sottocartella presente, più altri due esecuzioni in cui si estraggono i simboli '.' e '..' (rappresentanti la cartella corrente e la sua cartella madre). Al termine restituirà FALSE.
A tal scopo le varie esecuzioni di readdir() possono essere gestite con il ciclo while().

La funzione closedir() chiude la risorsa. Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Vediamo il loro utilizzo:

<?php
// indichiamo la cartella da aprire
// il simbolo . indica la cartella corrente
$cartella = '.';

// verifichiamo che la cartella esiste
if(!is_dir($cartella))
   {
   exit('La cartella indicata non esiste!');
   }

// apriamo la cartella
$risorsa = opendir($cartella) or die('impossibile aprire la cartella!');

// con il ciclo while eseguiamo più volte la funzione readdir()
// valorizzando la variabile $file
// fin quando essa non darà come risultato FALSE
while(($file = readdir($risorsa)) !== FALSE) 
   {
   echo $file."<br />";
   }

// chiudiamo la cartella
closedir();
?>

 

 

LA FUNZIONE SCANDIR()

La funzione scandir() esegue la lettura dei file e le cartelle presenti in una cartella restituendone i nomi all'interno di un array. Essa è utilizzabile sono nelle versioni di php superiori alla 5. 

Essa accetta due parametri: il primo è una stinga indicante il percorso alla cartella; il secondo opzionale determina l'ordine di estrazione può assumere valori 0, per ordinare alfabeticamente, o 1, per ordinare in sesno inverso.

Restituisce un array i cui elementi sono costituiti dai nomi dei file e cartelle presenti.

 

Vediamone un esempio:

<?php
// indichiamo la cartella da aprire
// il simbolo . indica la cartella corrente
$cartella = '.';

// verifichiamo che la cartella esiste
if(!is_dir($cartella))
   {
   exit('La cartella indicata non esiste!');
   }

// creaimo un array con tutti i file
$array_file = scandir($cartella) or die ('Impossible leggere la cartella!');

// stampiamo i valori
foreach ($array_file as $key => $value)
   {
   echo $value."<br />";
   }
?>

 

LA FUNZIONE GLOB()

La funzione glob() serve per elencare i file presenti in una cartella con la possibilità di indicare il tipo di estensione che debbono avere i file. E' attiva solo nelle versioni di php superiori alla 4.3.

Essa accetta due parametri: il primo è una espressione indicante il percorso alla cartella e i file da selezionare; il secondo opzionale è una costante che potrà assumere diversi valori determinando una diversa interpretazione dell'espressione.

Restituisce un array i cui elementi sono costituiti dai file selezionati.

 

Vediamone il suo utilizzo:

<?php
// selezioniamo solo i file con estensione .php
$array_file = glob('cartella/*.php');

foreach ($array_file as $key => $value)
   {
   echo $value."<br />";
   }
?>

 

Poniamo che da una cartella contenente delle immagini vogliamo estratte tutti i file .jpg, .jpeg, .bmp, e .gif. 
In tal caso la funzione glob() verrà impiegata con tale sintassi:

<?php
// selezioniamo i file con estensione .jpg, jpeg, .png e .gif
$array_file = glob("immagini/*.{jpg,jpeg,gif,png}", GLOB_BRACE);

foreach ($array_file as $key => $value)
   {
   echo '<img src="'.$value.'">';
   }
?>

 

Vai alla lezione successiva

Vai alla lezione precedente

Olimpio Romanella

Sono un appassionato di Web Developing con un particolare debole per php. Mi dedico principalmente dello sviluppo back-end ed in particolare programmazione lato server con php, sviluppo di database relazionali MySql e progettazione di CMS di piccole e medie dimensioni.

Mi avvalgo del framework javascript Jquery, utilizzando molti dei suoi plugin e nei dei miei progetti utilizzo spesso il framework MVC Codeigniter.

12 Commenti presenti

avatar Mattia

Mattia

23 December 2015 ore 13:26

@Olimpio Romanella: Ma infatti vorrei solo le cartelle, che esistono. eppure non mi stampa mai nulla, nemmeno rimuovendo GLOB_ONLYDIR mi stampa nulla, ne directory, ne files...

avatar Mattia

Mattia

23 December 2015 ore 13:24

avatar Olimpio Romanella

Olimpio Romanella

23 December 2015 ore 13:18

@Mattia:
rimuovi il secondo parametro dalla funzione glog altrimenti ti restituira' solo le sottocartelle presenti e non i files.

avatar Mattia

Mattia

23 December 2015 ore 13:05

avatar Olimpio Romanella

Olimpio Romanella

12 August 2015 ore 10:32

avatar Fabio

Fabio

11 August 2015 ore 12:27

avatar Fabio

Fabio

07 August 2015 ore 17:38

avatar Olimpio Romanella

Olimpio Romanella

21 November 2014 ore 09:58

@prince: non e' molto chiaro cio' che chiedi. Ma, andando ad intuito, credo che sia possibile cio' che intendi.

avatar prince

prince

20 November 2014 ore 17:02

avatar webskey

webskey

06 November 2011 ore 17:43

in anzi tutto grazie per avermi risposto cosi in fretta
e mi scuso forse sono stato troppo ristretto nel spiegare la cosa cmq il fatto e che devo fare un script che riconosca la cartella nella sotto cartella del sito web senza dover specificare la destinazione egni volta ess: se devo copiare lo script dentro la cartella di nome public/cartella/files o pure public/nuova _cartella/files il file xml dovrebbe cmq trovare la cartella files senza che io la debba specificare ogni volta la destinazione in pratica dovrebbe leggere sempre dentro la cartella files ovunque si trovi la script _cartella/files il file xml dovrebbe cmq trovare la cartella files senza che io lo debbe specificare ogni volta la destinazione in pratica dovrebbe leggere sempre dentro la cartella files ovunque si trovi la script Visualizza altro
in pratica se scrivo cosi mi trova la cartella ma solo se posta sulla cartella principale del mio dominio <security name="ImageGalleryPath">/files</security>

avatar oly1982

oly1982

06 November 2011 ore 14:53

avatar webskey

webskey

06 November 2011 ore 14:46