{"id":3074,"date":"2020-09-07T10:00:01","date_gmt":"2020-09-07T08:00:01","guid":{"rendered":"https:\/\/www.eugigufo.net\/it\/?page_id=3074"},"modified":"2024-10-01T13:58:27","modified_gmt":"2024-10-01T11:58:27","slug":"paragrafo24","status":"publish","type":"page","link":"https:\/\/eugigufo.net\/it\/inerario\/paragrafo24\/","title":{"rendered":"\u00a7 24. La lista dei file e dei cataloghi di una directory"},"content":{"rendered":"<p>A&nbsp;volte sorge la&nbsp;necessit&agrave; di&nbsp;scrivere in&nbsp;PHP un&nbsp;codice che mostri la&nbsp;lista dei file e&nbsp;dei cataloghi contenuti in&nbsp;una directory&#8230; A&nbsp;quale scopo? Fondamentalmente, per non scrivere e&nbsp;aggiornare manualmente troppi elenchi (forse dovendoli pure linkare).<br \/>\nOggi condivido, senza troppi commenti, con i&nbsp;lettori ben cinque metodi validi.<br \/>\n<b>Il&nbsp;metodo &#8470;&nbsp;1.<\/b> Visualizzare la&nbsp;lista dei file con la&nbsp;stessa estensione (per esempio *.php):<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 1; notranslate\" title=\"listing 1\">\n$filelist = glob(&quot;*.php&quot;);\n    foreach ($filelist as $filename){\n        echo $filename.&quot; e le sue dimnsioni: &quot;.filesize($filename).&quot; byte&lt;br&gt;&quot;;\n}\n<\/pre>\n<p>\n&Egrave;&nbsp;possibile visualizzare la&nbsp;lista dei file con qualsiasi estensione: &egrave;&nbsp;sufficiente sostituire php con quella desiderata nella prima riga del codice appena visto.<br \/>\nInoltre, per esempio, &egrave;&nbsp;possibile visualizzare la&nbsp;lista dei file con i&nbsp;nomi parzialmente uguali. Per farlo, indicare nella funzione glob() la&nbsp;parte comune: glob(&quot;xyz*.doc&quot;) cercher&agrave; quindi i&nbsp;file doc con i&nbsp;nomi che iniziano per xyz.<br \/>\n<b>Il&nbsp;metodo &#8470;&nbsp;2.<\/b> Visualizzare tutti i&nbsp;file della cartella corrente<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 2; notranslate\" title=\"listing 2\">\n$path = &quot;.&quot;;\n    $filelist = array();\n\n    if($handle = opendir($path)){\n        while($entry = readdir($handle)){\n            echo $entry.&quot;&lt;br&gt;&quot;;\n        }\n      \n        closedir($handle);\n    }\n<\/pre>\n<p>\nLa&nbsp;cosa in&nbsp;pi&ugrave; da&nbsp;sapere sul codice gi&agrave; facile &egrave;&nbsp;la&nbsp;possibilit&agrave; (opzionale) di&nbsp;indicare il&nbsp;nome di&nbsp;una cartella al&nbsp;posto del punto nella espressione $path=&quot;.&quot; (quindi per vedere la&nbsp;lista dei file della cartella files scrivere $path=&quot;files&quot;).<br \/>\n<b>Il&nbsp;metodo &#8470;&nbsp;3.<\/b> L&rsquo;uso della funzione scandir()<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 3; notranslate\" title=\"listing 3\">\n$path = scandir(&quot;files&quot;);\n\n    foreach($path as $k){\n            echo $k.&quot;&lt;br&gt;&quot;;\n}\n<\/pre>\n<p>\nLa&nbsp;funzione scandir() sa&nbsp;solamente interpretare il&nbsp;percorso verso il&nbsp;&laquo;posto&raquo; dove cercare i&nbsp;file. Leggendo l&rsquo;array &egrave;&nbsp;possibile avere l&rsquo;elenco dei file e&nbsp;delle cartelle. Per cercare nella stessa cartella della funzione indicare scandir(&quot;.&quot;) &ndash; con il&nbsp;punto.<br \/>\n<b>Il&nbsp;metodo &#8470;&nbsp;4.<\/b> L&rsquo;uso di&nbsp;una funzione con il&nbsp;ciclo for<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 4; notranslate\" title=\"listing 4\">\nfunction nav($dir){\n   if(is_dir($dir)){\n        $files = scandir($dir);\n        array_shift($files); \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 '.'\n        array_shift($files); \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 '..'\n\n        for($i=0; $i&lt;sizeof($files); $i++){\n            $len = $files&#x5B;$i];\n            echo $len.&quot;&lt;br&gt;&quot;;\n        }\n   }\n}\n    \n    $dir = &quot;files&quot;;\n    nav($dir);\n<\/pre>\n<p>\nPotete notare anche voi che il&nbsp;nome della directory &egrave;&nbsp;contenuto nella variabile dir. Dall&rsquo;array vengono eliminati &raquo;.&quot; e &laquo;..&raquo;.<br \/>\n<b>Il&nbsp;metodo &#8470;&nbsp;5.<\/b> Quello ritenuto il&nbsp;migliore da&nbsp;molti programmatori.<\/p>\n<pre class=\"brush: php; collapse: false; title: listing 5; notranslate\" title=\"listing 5\">\n$dir = &quot;files&quot;;\n    if($handle = opendir($dir)){\n\n        while(false !== ($file = readdir($handle))) {\n            if($file != &quot;.&quot; &amp;&amp; $file != &quot;..&quot;){\n            echo $file.&quot;&lt;br&gt;&quot;;\n        }\n    }\n}\n<\/pre>\n<p>\nPotete notare anche voi che il&nbsp;nome della directory &egrave;&nbsp;contenuto nella variabile dir.<br \/>\nMa&nbsp;in&nbsp;realt&agrave; non esistono i&nbsp;metodi migliori. Esistono i&nbsp;metodi pi&ugrave; o&nbsp;meno adatti alle necessit&agrave; concrete del momento.<br \/>\nScegliete pure il&nbsp;metodo che vi&nbsp;sembra pi&ugrave; facile da&nbsp;adattare al&nbsp;proprio progetto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il paragrafo dell\u2019\u201cInerario\u201d dedicato ai vari modi di visualizzare la lista dei file e cataloghi contenuti in una directory con un semplice script in PHP.<br \/>\nQuesto paragrafo \u00e8 stato pensato per le persone pigre (come lo \u00e8 il sottoscritto) che non hanno la vogli di scrivere e aggiornare manualmente delle liste di ogni genere (forse dovendo pure linkare le singole voci).<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":452,"menu_order":24,"comment_status":"open","ping_status":"closed","template":"inerarioart.php","meta":{"footnotes":""},"class_list":["post-3074","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/3074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/comments?post=3074"}],"version-history":[{"count":0,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/3074\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/452"}],"wp:attachment":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/media?parent=3074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}