Newsgroup: it.comp.www.php
Titolo: lista file directory e stringa

ciao, per farmi dare una lista di file presenti in una directory specificata
uso questo codice:
<?php
$dir = "/html";
if (is_dir($dir)) {
   if ($dh = opendir($dir)) {
       while (($file = readdir($dh)) !== false) {
echo $temp="$file"."|";
       }
       closedir($dh);
   }
}
?>
ora, perň, il risultato che ottengo č questo:
.|..|tr.doc|cs.txt|cv.doc|lo.txt|vi.doc|la.txt|ki.txt|ro.txt|co.txt|de.txt|d
y.txt|
mentre avrei bisogno che fosse questo:
tr.doc|cs.txt|cv.doc|lo.txt|vi.doc|la.txt|ki.txt|ro.txt|co.txt|de.txt|dy.txt
(notare inizio e fine)
Come posso modificare il codice perché la stringa mi venga mostrata cosě?
Grazie.

 ha detto:

Basta leggere il manuale:
http://it.php.net/manual/it/function.readdir.php
Ciao
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Project Admin di "PHP Reservation - Online booking system" - 
http://phpreservation.sourceforge.net
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 cosl?
Metti un if per saltare i file indesiderati ed utilizza substr per
rimuovere l'ultimo carattere.
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

grazie ad entrambi.
Perdonate l'ignoranza, ho anche letto la documentazione e in generale studio
e tento di disturbare il ng il meno possibile.
Da cosa sono determinati i primi 5 caratteri qui se nella directory non ci
sono altri file?
.|..|tr.doc|cs.txt|vicv.doc|lo.txt|vi.doc|la.txt|ki.txt|ro.txt|co.txt|is.txt
|dy.txt|
grazie ancora.

 .|..|
. => "directory" corrente
.. => "directory" superiore


quindi andrebbero eliminati dalla conta.
Per fare ciň, presumendo che html sia la cartella in cui cercare i file,
sarebbe corretto utilizzare un sistema come questo?
<?php
if ($handle = opendir('html')) {
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
           echo "$file"."|";
       }
   }
   closedir($handle);
}
?>
Molte grazie.


 sarebbe corretto utilizzare un sistema come questo?
Sě, per avere a video la successione di file_x|file_y|file_x|file_z| va
bene, ma considera che:
a) la stringa di fatto non viene costruita (sicuro ti serva stamparla e
   non utilizzarla piů?)
b) rimane il problema dell'ultimo pipe, che se non erro volevi togliere.
Con una funzioncina ad hoc risolvi tutto:
function componi_stringa($dir) {
 $temp="";
   if ($handle = opendir($dir)) {
      while (false !== ($file = readdir($handle))) {
      $temp.=($file != "." && $file != "..")? $file . "|" : "";
      } // sta avvenendo una vera e propria concatenazione,
        // di output se ne parla a stringa "finita" 
   closedir($handle);
   }
return substr($temp,0,-1);//restituisce tutto, tranne l'ultimo carattere
}
$str=componi_stringa("html");
echo $str; // la variabile $str puoi utilizzarla quando e come vuoi
Se poi volessi eliminare non solo le due directory "." & "..", ma
*tutti* i file che iniziano col punto (quelli invisibili),
nell'operatore ternario sostituisci:
($file != "." && $file != "..")
con:
(substr($file,0,1)!=".")
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

> .. => "directory" superiore
<?php
if($handle = @opendir('html')){
  while(false !== ($file = readdir($handle)))
    if($file != '.' && $file != '..')
      $file_list[] = $file;
closedir($handle);
if(is_array($file_list)) 
  echo implode('|', $file_list);
else
  echo "Nessun file presente!<br />\n";
}
else
  echo "Impossibile connettersi alla risorsa!<br />\n";
?>
-- 
www.iuz-lab.info

grazie a tutti, ce n'č da studiare...   :-)
La stringa mi serve cosě com'č:
devo passarla all'oggetto loadVars di Flash 2004