readdir() come non includere le sottodirectory?

Sto scrivendo uno script che mi legga la cartella immagini contenenti delle sottodirectroy (per ogni album) che a loro volta contengono le immagini.

<?php

if ($handle = opendir($filename)) {
      
      while (false !== ($file = readdir($handle))) { 
         
         if (($file !== '.') && ($file !== '..') ) {
               
               
            
       } 
       
      } // end while
      
      closedir($handle); 

?>

ma come faccio a dirgli di non includere le sottodirectory?

devo lavorare di espressioni regolari?

il nome delle directory sarà il nome dell'album e le immagini avranno una semplice numerazione progressiva.

che strada mi conviene seguire?

inviato 10 anni fa
arjuna
X 0 X

Ricordavo male il comportamento delle funzioni php in questione.

Gia non va al di la delle subdirectory.

Ora però sto studiando un modo per memorizzare le informazioni ricavate in un file di testo (lo scopo è quello di non usare database).

Mi conviene usare l'XML?

Ora studio un pò la questione e posto i risultati.

risposto 10 anni fa
arjuna
X 0 X

Sto scrivendo uno script che mi legga la cartella immagini contenenti delle sottodirectroy (per ogni album) che a loro volta contengono le immagini.

ma come faccio a dirgli di non includere le sottodirectory?

devo lavorare di espressioni regolari?

Se non ho capito male, devi leggere il contenuto ( immagini )di una cartella, ma non devi leggere le sottodirectory per poi stampare il loro nome in un file di etsto, giusto?

Se è così:

<?php
$fp = fopen("img.txt","w+");
if ($handle = opendir($filename)) {
      
      while (false !== ($file = readdir($handle))) { 
         
         if (($file !== '.') && ($file !== '..') && !is_dir($file) ) {
               
               echo $file; /*ti stamperà solo le immagini della cartella principale*/
                               fwrite($fp,$file."\n"); /*stamperà nel file di testo il nome dell'immagine trovata, con \n gli dico di andare a capo (se non dovesse funzionare \n prova con \r\n , dipende dal Sistema Oprativo)*/
            
       } 
       
      } // end while
      
      closedir($handle); 
fclose($fp);

?>

Se invece devi stampare in quel file di testo anche le immagini contenute nella sottodirectory dovrai modificaer facendo una cosa simile:

<?php

function ReadImages($directory='.')
{
$fp = fopen("img.txt","w+");
if ($handle = opendir($directory)) {
      
      while (false !== ($file = readdir($handle))) { 
         
         if (($file !== '.') && ($file !== '..') )
                {
                     if(is_dir($file) )
                        ReadImages($file);
              else
                      {      
               echo $file; /*ti stamperà solo le immagini della cartella principale*/
                               fwrite($fp,$file."\n"); /*stamperà nel file di testo il nome dell'immagine trovata, con \n gli dico di andare a capo (se non dovesse funzionare \n prova con \r\n , dipende dal Sistema Oprativo)*/
         }   
       } 
       
      } // end while
      
      closedir($handle); 
fclose($fp);
}
}

ReadImages('.');

Mi spiace,ma non ho potuto provarle per vedere se funzionano, cmq penso che l'idea sia corretta.

Nel secondo esempio, controlli che $file sia una directory, se lo è, richiami la funzione passandogli $file(che è una dir) così dovrebbe leggerti anche i file all'interno della sottodirectory

Fammi sapere...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

non ho difficoltà a scrivere su un file ma dovrei far in modo da accedere ai dati contenuti nel file in maniera intelleggibile, per fare questo mi sembra di vedere nell'xml un'ottima soluzione.

Sto appunto studiando come leggere e scrivere un file xml con php

risposto 10 anni fa
arjuna
X 0 X

ecco un articolo interessante che parla di xml e php:

http://www.siforge.org/articles/2005/06/28-php-sax.html

risposto 10 anni fa
arjuna
X 0 X

Viene presentato però una sola tecnica, forse la più noiosa, per maneggiare un file XML.

Sono invece da provare le funzioni dell'estensione simplexml.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

come sospettavo questa estensione prevede php5 e molti server non lo supportano ancora.

risposto 10 anni fa
arjuna
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda