Corso PHP: 21 - Alcuni esempi di funzioni relative a files/directories
1. wwGetFiles
Questa funzione ritorna un array con tutti i files di una directory. Il nome della directory è passato come parametro. Nessun file viene escluso. Script:<?php function wwGetFiles($dir) { //-------------------------------------- // Ritorna un array con i files di $dir //-------------------------------------- $filesarray=array(); if (is_dir($dir)) { // Verifica che $dir sia una directory if ($dh = opendir($dir)) { // apre la directory $n = 0; while (($file = readdir($dh)) !== false) { $filesarray[$n] = $file; $n++; } closedir($dh); } } return $filesarray; } ?>
2. wwGetFilesExt
Questa seconda funzione cerca in una directory e lista i file con una determinata estensione. Il nome della directory e l’estensione del file sono passati come parametri.Script:
<?php function wwGetFilesExt($dir, $ext) { //--------------------------------------------------------------------- // Ritorna un array con i files di estension $ext (senza il .) in $dir //--------------------------------------------------------------------- $filesarray=array(); $ext=strtolower($ext); $path = pathinfo($dir); if (is_dir($dir)) { // Verifica che $dir sia una directory if ($dh = opendir($dir)) { // apre la directory $n = 0; while (($file = readdir($dh)) !== false) { $extension = pathinfo($file, PATHINFO_EXTENSION); if (strtolower($extension) == $ext) { $filesarray[$n] = $file; $n++; } } closedir($dh); } } return $filesarray; } ?>
3. wwGetFilesPattern
Con questa funzione vogliamo listare tutti i files di una directory che rispettano un determinato pattern. Nome della directory ed il pattern vanno passati come parametri. Si sfrutta la funzione PHP glob illustrata al capitolo 19. Script:<?php function wwGetFilesPattern($dir, $pattern) { //----------------------------------------------------------------------------- // Ritorna un array con i files di $dir che hanno un match col pattern fornito //----------------------------------------------------------------------------- $char = substr($dir, -1, 1); $slash = (($char=="/") || ($char=="\\")) ? $slash="" : "/"; if (is_dir($dir)) { // Verifica che $dir sia una directory $files = glob($dir.$slash.$pattern); } return $files; } ?>
4. wwGetFilesPattern
Questa funzione è un po’ più sofisticata e lista tutti i files di una directory con esclusione di quelli con estensione pari ad una di quelle da escludere fornite in un array, di tutte le subdirectories e del file stesso in esecuzione. Script:<?php function wwGetFilesExclusions($dir, $exclusions) { //----------------------------------------------------- // Ritorna un array con i files di $dir con esclusione // di quelli con estensione inclusa nell'array fornito // e di tutte le subdirectories. //----------------------------------------------------- $files = array(); for ($i=0; $i<count($exclusions); $i++) { // trasformiamo le estensioni in lowercase $exclusions[$i] = strtolower($exclusions[$i]); } if (is_dir($dir)) { // Verifica che $dir sia una directory if ($dh = opendir($dir)) { // apre la directory while (($file = readdir($dh)) !== false) { $extension = strtolower(pathinfo($file, PATHINFO_EXTENSION)); if (!in_array($extension, $exclusions) && // se non ha un'estensione da escludere (!is_dir($file)) && // se non è una directory ($file != basename($_SERVER['PHP_SELF']))) { // se non è il presente file $files[]=$file; } } } } return $files; } ?>Vi lasciamo il compito di scrivere, anche solo per esercizio, una funzione che, per esempio, prelevi la lista di tutti i files di una directory che abbiano estensione pari ad una di quelle fornite in un array, magari col nome file che abbia un match con un predefinito pattern. Vediamo ora tre esempi di funzioni per ottenere nome file ed estensione separatamente sfruttando le funzioni standard. Si tratta di funzioni piuttosto banali, ma utili soprattutto perché più semplici da ricordare e da scrivere.
<?php function wwGetExtension($path) { //---------------------------------- // Ritorna l'estensione di un file //---------------------------------- return strtolower(pathinfo($path, PATHINFO_EXTENSION)); } //=================================================================== function wwGetFileName($path) { //--------------------------------------------------------- // Ritorna il nome di un file senza la path e l'estensione //--------------------------------------------------------- $ext=".".pathinfo($path, PATHINFO_EXTENSION); return basename($path, $ext); } //=================================================================== function wwSplitFileName($path) { //---------------------------------------------------------------------- // Ritorna un array con 2 elementi: il nome del file e la sua estensione //---------------------------------------------------------------------- $name=wwGetFileName($path); $ext=wwGetExtension($path); return array($name, $ext); } ?>In particolare con la terza funzione, wwSplitFileName, si possono ottenere nome ed estensione separatamente nei due elementi dell’array. Per esempio così:
<php $SplittedFile=wwSplitFileName($path); $Nome=$SplittedFile[0]; $Estensione=$SplittedFile[1]; ?>Nel file che potete trovare qui abbiamo incluso tutte le funzioni descritte in questo articolo.
-
tags:
Commenti
(Occorre fare login per commentare - Se non sei registrato puoi farlo cliccando su "accedi")