Fișiere și directoare în php - Vreau un site web

Fișiere și directoare în php

Fișiere și directoare în php - Vreau un site web

În toată ziua, salut. Astăzi vreau să vă spun despre câteva funcții PHP pentru lucrul cu directoarele și sistemul de fișiere. Și deoarece acest lucru este cel mai bine făcut cu exemple, atunci fără întârziere, mă îndrept direct spre ei.







Așa că ne confruntăm cu provocarea:

Obțineți o listă de fișiere din directorul curent și filtrați elementele cu anumite extensii de fișiere. determinând trecerea dimensiunii fișierelor selectate și, desigur, transmiterea către browser a datelor pe care le-am primit.

Păi, pentru ca viața să nu pară dragă, hai să complicăm sarcina și vom primi lista recursivă a fișierelor conținute în director.

Într-adevăr, ce se întâmplă dacă, pe lângă fișierele selectate de noi, există și alte directoare pe lângă fișiere, dar în interiorul lor există mai multe, mai multe și mai multe.

Aici, deci, pentru a ne ajuta, va veni recursivitatea. adică inversarea funcției în sine. După cum se spune, lasă mașina în sine funcționează, este fier.

Iată cum am făcut-o:

Să analizăm pas cu pas codul scriptului.
În primul rând, voi descrie funcția read2Dir (). care de fapt va efectua toate lucrările.

Este nevoie de următorii parametri:

$ dir Director pe care vom scana $ offs Parametrul care determină tipul de osupa când se afișează date în browser

Apoi, folosind instrucțiunea if (dacă este scris doar puțin diferit), verificăm dacă slash (/) este la sfârșitul directorului.

Și dacă el este acolo, lăsați totul ca atare și altfel adăugați-l până la capăt.

Și dacă nu este cazul, părăsim funcția returnând FALSE. Ei bine, dacă e tot același director, puteți utiliza funcția opendir () obține mâner pentru o utilizare ulterioară, care, la rândul său, ajută funcția readdir () pentru a obține un element pe acest descriptor la directorul.







Și vom obține elementele directorului în bucla whille atâta timp cât elementul director există - adică. nu la fel ca FALSE. Sau, într-un mod mai simplu, vom primi elemente în buclă până la sfârșit.

Acordați atenție că este necesar să verificați identitatea.

Ca rezultat, ar trebui să obțineți această linie - (documents / file.txt). desigur, dacă elementul rezultat este un fișier, bine, altfel elementul rezultat este un director și în consecință trebuie să efectuăm scanarea din nou.

Pentru aceasta, folosiți mai întâi funcția basename (). care returnează numele fișierului din calea specificată, verificăm dacă elementul primit este "." sau ".."
În acest caz, să ignorăm iterația buclăului whille utilizând instrucțiunea continuă.

Apoi, definim folosind funcția filetype () pentru a determina tipul de fișier.
Această funcție returnează una dintre valorile posibile: fifo, char, dir, block, link, file sau necunoscut.

Dar în cazul nostru special, suntem interesați doar de dir. și dacă acesta este cazul, atunci începem recursul.

Adică, noi numim din nou funcția read2Dir (). numai de data aceasta trecem elementul curent la acesta și adăugăm offsetul suplimentar la variabila $ offset.

Ei bine, dacă elementul primit atunci când citim directorul, atunci verificăm extensia fișierului. Pentru a face acest lucru, cel mai simplu mod este să verificați cele trei caractere ultime pentru potrivirea extensiei dorite.

Le obținem folosind funcția substr (). care returnează un substring. Și mi-am arătat că mă interesează ultimele trei simboluri.

Ei bine, după destul de simplu.
Dacă extensia se potrivește cu cea atribuită, utilizați funcția file size (). care returnează dimensiunea fișierului specificat în octeți sau FALSE în caz de eroare, obținem dimensiunea fișierului și instrucțiunea ecou imprimă-o în browser.

Ai lucrat? Apoi nu uitați să eliberați descriptorul de director prin funcția closedir (). care închide fluxul asociat cu directorul.


Aici, la noi, funcția sa dovedit. Și o puteți numi, de exemplu, prin specificarea explicită a directorului de interes. Am ales un director la un nivel deasupra directorului din care este rulat scriptul.


Sau, utilizați funcția getcwd (). Numele directorului de lucru curent este returnat.

Experimentați despre sănătate!

Anticipând întrebări de la unele „guru“ al programului, vreau să rețineți că am în mod deliberat nu optimizat cod, așa cum el însuși a stabilit sarcina nu este scris codul „ideal“, și arată cât de mult posibil, probabil, în ceva în sine duplicat funcții sunt folosite pentru a lucra cu fișierul sistem și cataloage.

Asta e tot pentru ziua de azi. Sunt bucuros să vă răspund la întrebări dacă aveți vreunul. La revedere.







Articole similare

Trimiteți-le prietenilor: