giorno settimanamesegiorno

Sono passati 88 giorni dall'inizio dell'anno che corrispondono a 13 settimane

Arcobaleno, domani sereno



* Chattina

Aggiorna Storia
  • mar: :resistere:
    Febbraio 15, 2022, 19:44:48
  • mar: Non mi ricordavo di essere un global moderator wauuuu Ok Prof ti lascio restaurare in pace!
    Febbraio 15, 2022, 19:43:56
  • mar: :Cartelli70:
    Febbraio 15, 2022, 19:41:14
  • mar: ad cazzum pure qui?
    Febbraio 15, 2022, 19:41:02
  • mar: ciaoooo sono in perlistrazione
    Febbraio 15, 2022, 19:40:44
  • mar: :okkey:
    Febbraio 15, 2022, 19:40:20
  • Loretta/Nina: ciao a tutti
    Ottobre 04, 2021, 19:23:02
  • Loretta/Nina: :tuffarsi:
    Settembre 21, 2021, 07:08:03
  • Loretta/Nina: Buon autunno a tutti
    Settembre 21, 2021, 07:01:35
  • nuvolotta: avventure testuali
    Luglio 06, 2020, 23:26:08
  • _jan_: ...gli ultimo però....!!
    Gennaio 14, 2019, 14:45:09
  • _jan_: vedi gli ultimi post in fondo.
    Novembre 24, 2018, 19:10:00
  • mar: Trovato :Amm9:
    Novembre 24, 2018, 18:57:51
  • mar: Chi cerca trova non vi trovo! :Cartelli2:
    Novembre 24, 2018, 18:57:05
  • mar: Vado a vedere le cartoline!
    Novembre 24, 2018, 18:52:38
  • mar: :Amore145:
    Novembre 24, 2018, 18:52:21
  • mar: :Amore178:
    Novembre 24, 2018, 18:52:07
  • _jan_: Welcome Visitor.  :Party133:
    Novembre 15, 2018, 10:03:24
  • Loretta/Nina: Benvenuto ligi  :Cartelli37:
    Ottobre 09, 2018, 13:19:25
  • nuvolotta: Cucù...  :Amore20:
    Settembre 16, 2018, 01:16:47
  • Loretta/Nina: :Party133:
    Settembre 01, 2018, 17:05:30
  • _jan_: Ciao ai visitors!!
    Settembre 01, 2018, 17:02:31
  • Loretta/Nina: :fischio: :979:
    Agosto 28, 2018, 16:20:48
  • ketty: ah beh, meno male. ora il tempo e' un po' brutto
    Agosto 26, 2018, 13:27:36
  • _jan_: No, no, soqquà. Ci passo ma....... non c'è mai nessuno. Ammiro Nuvolotta, solitaria e presente.
    Agosto 25, 2018, 10:34:41
  • ketty: ma Jan è andato in vacanza? :Cartelli70:
    Agosto 24, 2018, 20:51:59
  • ketty: ciao a tutti.
    Agosto 24, 2018, 20:50:12
  • nuvolotta: :faccina_fiore: ciao ragazzioli/ole...
    Agosto 19, 2018, 23:03:49
  • Loretta/Nina: :ciao: :Party133:
    Agosto 19, 2018, 20:24:28
  • _jan_: :Felici13:
    Agosto 04, 2018, 15:30:40
  • nuvolotta: Ferie... già fatte....
    Agosto 04, 2018, 09:54:58
  • _jan_: Auguri di buon onomastico a tutti gli Alfonso....
    Agosto 01, 2018, 11:10:21
  • _jan_: chiusp per ferie?
    Luglio 30, 2018, 19:50:58
  • _jan_: Buon onomastico a Donatella Seconda........ e la prima? :Shok145:
    Luglio 30, 2018, 06:59:38
  • _jan_: Buon onomastico a tutte le Marta.  :Amore20:
    Luglio 29, 2018, 07:44:31
  • _jan_: Ci sono altre nuove iscritte viste il 26 luglio 2018..... (mica saranno monache)....  :approva:
    Luglio 26, 2018, 18:39:04
  • _jan_: Oggi, 26 luglio 2018, abbiamo una nuova iscritta "Francesca".....Benvenuta Francesca.  :Party133:
    Luglio 26, 2018, 15:49:24
  • _jan_: Buon onomastico anche a tutte le Anna!!! .....
    Luglio 26, 2018, 10:30:21
  • _jan_: Auguri di Buon Onomastico a TUO..... (ogni giorno, credo)..... :sm269:
    Luglio 26, 2018, 10:28:52
  • ketty: ma.... quando è il tuo?
    Luglio 25, 2018, 19:52:19

* Emoticon aggiuntive e link al portale


Autore Topic: gestione dei files: Leggere i files e sottocartelle di una cartella  (Letto 5821 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
So che è una piccola cosa, ma alle volte può tornare utile saper leggere il contenuto di una cartella.
Qui di seguito vi mostro alcune diverse tecniche per eseguire questa operazione.

Mi scuserete se questo piccolo tutorial lo divido in più parti, ma questa cosa si rende necessaria per evitare confusione e per semplificarne la lettura.

Per leggere il contenuto della cartella.
Occorre  innanzitutto posizionarsi nella cartella da leggere. Per cui se la cartella da leggere è la stessa dove risiede lo script è suggiciente posizionarsi con un semplice
$dir = "./";
se è in altro posto basta indicare la posizione con
$dir ='./';
chdir($dir);


Vediamo subito le istruzioni per leggere e visualizzare il contenuto della cartella in esame:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
// lettura dei files della cartella dove risiede il file con lo script
$dir "./";
if (is_dir($dir)) {
    if ($dh opendir($dir)) {
        while (($file readdir($dh)) !== false) {   // questo è un ciclo che si ripete fin tanto che non è stato letto tutto il contenuto della cartella
            echo $file "<br />\n";
}
closedir($dh);
    }
}
?>

Questo farà vedere una cosa del genere:
Citazione
default1.php
gest_file_05.php
gest_file_03.php
pagina5.php
matrici.php
macro003.htm
macro004.htm
php007.php
pagina.php
pagina4.php
variabili.php
php005.php
macro005.htm
php003.php
cartella2
mail_3.php
gest_file_02.php
pagina1.php
.
gest_file.php
php004.php
gest_file_04.php
..
pagina3.php

Come vedete nell'elenco sono indicati in modo confuso sia i files che le cartelle


Ma c'è un altro modo per ottenere un output più ordimato. Il metodo consiste nel determinare se l'oggetto letto è un file o una cartella e memorizzarlo in una o l'altra matrice per poi visualizzare, in modo ordinato prima una matrice e poi l'altra.

Prima fase: lettura e memorizzazione dei contenuti di una cartella in 2 distinte matrici una per le cartelle ed una per i files.
Per fare questo ci sono 2 istruzioni PHP:
if (is_dir($dir . $file)
.................
if (is_file($dir.$file))
Il significato di queste istruzioni è ovvio, immagino. Per cui passiamo subito alla presentazione del codice.

Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
// lettura dei files della cartella dove risiede il file con lo script
$dir "./";
if (is_dir($dir)) {
    if ($dh opendir($dir)) {
        while (($file readdir($dh)) !== false) {
if ($file<>"." AND $file<>"..") {
if (is_dir($dir $file)){
            $folder[] = $file;
}
if (is_file($dir.$file)) {
            $file_trovati[] = $file;
}
}
}
closedir($dh);
    }
}
// .......................................... il resto del codice qui sotto
?>

Fatta questa operazione non ci resta che visualizzare il contenuto delle due matrici scorrendole semplicemente con un ciclo.
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
//  ........................... il resto del codice è qui sopra
        
if (is_array($folder) && count($folder) > 1) {
echo "<strong>Le cartelle trovate</strong><br />";
for($i=0;$i<count($folder);$i++) {
print $folder[$i] . "<br>\n";
}
}
echo "<hr>";
if (is_array($file_trovati) && count($file_trovati) > 1) {
echo "<strong>I files trovati</strong><br />";
for($i=0;$i<count($file_trovati);$i++) {
print $file_trovati[$i] . "<br>\n";
}
}
?>

Ecco. Per ora è tutto. nel prossimo post metteremo alla nostra routine dei filtri.
E' stupido pensare di non aver bisogno degli altri

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
applicazione dei filtri nel leggere i files
« Risposta #1 il: Febbraio 09, 2009, 16:59:12 »
Con questo vogliamo leggere sol dei files con determinate estensioni

Ora si può affinare la nostra esplorazione tra le cartelle. Col codice seguente ricerchiamo gli eventuali files con estensione .htm
Per fare questo e per facilitare la lettura del codice principale facciamo uso di una funzione che chiameremo quando necessario.
Qui di seguito vediamo la funzione seguita dal codice.
La funzione inizia con la dichiarazione del suo nome accompagnato da un argomento e finisce con la parentesi graffa di chiusura:
function estensione_file($string) {
// ...................................
}


Nel codice la funzione viene richiamata con l'istruzione:

$ext = estensione_file($file);

Siccome la funzione presenta un argomento ($string), il richiamo ad essa va effettuato indicando l'argomento da passare ($file).
Questo un probabile codice:

Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
function estensione_del_file($string) { 
        
//parte prima la funzione
//Controllo il file
$trova_punto explode("."$string);
$estensione $trova_punto[count($trova_punto) - 1];
$estensione strtolower($estensione);
// Se non ci sono estensioni
if (isset($trova_punto[1]) == FALSE) {
return &#39;&#39;;
}
//Ritorno il valore dell&#39; estensione
return $estensione;
}
[
hr]
//     parte seconda la lettura e la scelta dei files
// lettura dei files della cartella dove risiede il file con lo script
$file_trovati = array();
$dir "./";
if (is_dir($dir)) {
    if ($dh opendir($dir)) {
        while (($file readdir($dh)) !== false) {
if ($file<>"." AND $file<>"..") {
$ext estensione_del_file($file);
if ($ext == "htm") {    // vengono accettati solo i files con estensione HTM
            $file_trovati[] = $file;
}
}
}
closedir($dh);
    }
}
//     parte terza la visualizzazione di quanto è stato letto
echo "<strong>I files trovati</strong><br />";
if (is_array($file_trovati) && count($file_trovati) > 1) {
for($i=0;$i<count($file_trovati);$i++) {
print $file_trovati[$i] . "<br>\n";
}
}
?>

L'elenco dei file risultanti mostrerà solo quei files che hanno una estensione .htm

Nel prossimo post vedremo come usare in modo intelligente la possibilità di applicare i filtri.
E' stupido pensare di non aver bisogno degli altri

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Creazione dell'indice con doppio filtro
« Risposta #2 il: Febbraio 09, 2009, 17:42:11 »
Bene. Siamo arrivati alla conclusione di questa discussione.
Ora vedremo come creare dinamicamente dei menù (o indici) leggendo il contenuti di una cartella e creando dei link ad essi.

Per fare questo ci facciamo aiutare da due fattori:
un prefisso che metteremo ai files da linkare
il titolo che abbiamo usato servendoci del tag <title> ... </title>.

Per fare questo, sempre per ottimizzare il codice ho creato una seconda funzione. Quindi ci ritroviamo con 2 funzioni:
function estensione_file($string)
function leggi_titolo($file)


Mentre la prima funzione l'abbiamo vista nel post precedente, la seconda funzione esegue questo lavoro:

In questa funzione:
        leggiamo il contenuto del file in esame memorizzando il suo contenuto, riga per riga, in una matrice ($content)
        cominciamo a cercare tra le varie righe la stringa <title>
        trovata questa stringa la cancelliamo e resta la sola stringa contenuta tra <title> e </title
        interrompiamo il ciclo e torniamo alla routine principale.

Nella routine principale eseguiamo questo lavoro:

      ci spostiamo nella cartella da leggere
      iniziamo a leggere i files
      controlliamo che la estensione sia quella che cerchiamo
      il file deve avere un determinato prefisso, quindi controlliamo che nel nome del file ci sia anche questo
      se superiamo questi due test aggiungiamo il file nella matrice

Una volta letto tutto il contenuto della cartella e memorizzati i files desiderati nella matrice, prima di scriverli e lincarli leggeremo il contenuto del tag <title> ... </title> richiamando la funzione leggi_titolo().

Questo il codice che ho usato.

Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
//   la funzione per leggere le estensioni dei files
function estensione_file($string) { 
//Controllo il file
$trova_punto explode("."$string);
$estensione $trova_punto[count($trova_punto) - 1];
$estensione strtolower($estensione);
// Se non ci sono estensioni
if (isset($trova_punto[1]) == FALSE) {
return &#39;&#39;;
}
//Ritorno il valore dell&#39; estensione
return $estensione;
}
[
hr]
// la funzione per leggere il contenuto del tag <title>
function leggi_titolo($file) {
$content file($file); 
foreach ($content as $stringa) {
// fra gli elementi che abbiamo letto dal file cerchiamo l&#39;esistenza del tag < title >
$substr substr_count($stringa, &#39;<title>&#39;);
if ($substr) {
$page_title $stringa;
// cancelliamo i tag <title> di apertura e chiusura
$page_title str_replace("<title>"""$page_title);
$page_title str_replace("</title>"""$page_title);
// usciamo prematuramente dal ciclo
break; 
        } 
}
return $page_title;
}
[
hr]
// lettura dei files della cartella dove risiede il file con lo script
$file_trovati = array();
$path=&#39;./&#39;; 
chdir($path); 
$cartella opendir($path); //../php/
// creiamo un ciclo che legga i contenuti e li metta nell&#39;array
while ($file readdir($cartella)) {
if (is_file($file)) {
$estensione estensione_file($file);
$pos substr($file03);
if ($estensione == "php" && $pos == "php") {
$file_trovati[] = $file;
}
}
}
// chiudiamo il tag php per iniziare a disegnare, in codice HTML la tabella che conterrà i nostri link
?>

<table class="elenco" width="95%" border="1" cellspacing="0" cellpadding="0">
      <tr>
        <th>Argomento</th>
      </tr>
<?php
//  rientriamo in PHP per continuare il lavoro
foreach ($file_trovati as $file) {
$titolo leggi_titolo($path $file);    // questo il richiamo alla funzione che legge nel tag <title>
if ($titolo != "") {
echo "<tr><td>";
echo "<a href=\"" $path $file "\">" $titolo "</a>";   // con questo la creazione del link al file
echo "</td></tr>\n";
}
}
?>

</table>

Questo codice produce  una cosa del genere:

Citazione
<a href="./php007.php">matrici</a>
<a href="./php005.php">Eliminare il carattere \ dai dati inviati da un form</a>
<a href="./php003.php">e-mail con una sola pagina</a>
ecc.

Le parti sono così state scelte:
./ ........................ viene preso dala variabile $path
php007.php .......... è il nome del file che rispetta i filtri imposti: .php (estensione), php (prefisso)
matrici .................. è la stringa letta nel tag <title>

Il codice non è di difficile comprensione, mi sembra di facile letturaa e comprensione, per cui potrei anche fermarmi qui

Per ora è tutto. Tornerò presto con nuovi argomenti.

Ciao    :sei mio:
E' stupido pensare di non aver bisogno degli altri