Salvați variabila în fișierul php. Lucrul cu sistemul de fișiere

Sub lucrul cu fișiere în PHP subînțeles citind din fisierȘi scrie în fișier diverse informatii. Este destul de evident că trebuie să lucrezi mult cu fișiere, deci cu orice Programator PHP trebuie să poată citiți din fișierȘi scrie în fișier.

Urmare lucrul cu fișiere în PHP ca aceasta:

  1. Deschide fișierul.
  2. Efectuați acțiunile necesare.
  3. Închideți fișierul.

După cum puteți vedea, secvența de lucru cu fișiere seamănă cu lucrul cu fișiere printr-un explorator obișnuit. Doar aici toată munca este făcută automat de noi înșine Script PHP.

Să începem cu primul punct - deschiderea fișierului. Fișierul este deschis cu funcțiile fopen().. Primul parametru este calea fișierului, iar al doilea parametru este modificator. Să ne uităm imediat la posibilii modificatori:

  1. A- deschide fișierul doar pentru scriere, cu indicatorul plasat la sfârșitul fișierului.
  2. a+ A, dar fișierul se deschide și pentru citire.
  3. r- deschide fișierul doar pentru citire, iar indicatorul este setat la începutul fișierului.
  4. r+- la fel ca modificatorul r, dar fișierul este deschis și pentru scriere.
  5. w- deschide fișierul numai pentru scriere, setează indicatorul la începutul fișierului și șterge întregul conținut al fișierului.
  6. w+- la fel ca modificatorul w, doar fișierul este deschis și pentru citire.

Există, de asemenea, două moduri de lucru cu fișierele: binar(notat b) Și text(notat t). Dacă lucrați cu obișnuit fisier text, apoi selectați modul text și, dacă, de exemplu, cu o imagine, atunci binar.

Aceștia sunt toți modificatorii de bază, care vă vor fi suficienți. Acum să învățăm cum să închidem un fișier. Închide fișierul cu funcțiile fclose()..

Acum să trecem la citirea fișierului folosind funcțiile fread().. Și lasă-mă să-ți dau în sfârșit un exemplu:

$conținut = "";
în timp ce (!feof($handle))
$conținut .= fread($handle, 4096);
fclose($handle);
?>

ÎN în acest exemplu mai întâi deschidem fișierul pentru citire modul text(modificator rt). funcția fopen(). returnează așa-numitul descriptor, cu care puteți comunica cu fișierul și îl puteți scrie într-o variabilă mâner. Atunci suntem într-o buclă in timp ce() până când se ajunge la sfârșitul fișierului, citim de fiecare dată conținutul 4096 caractere pe care le scriem variabilei continuturi. După finalizarea procesului de citire, închideți fișierul, folosind din nou descriptorul de fișier.

Acum să trecem la înregistrarea folosind funcțiile fwrite().:

$handle = fopen("fisiere/a.txt", "la");
$string = "Acesta este text";
fwrite($mâner, $șir);
fclose($handle);
?>

După rularea acestui script, în fișier a.txt se va adăuga linia " Acesta este text".

Cititorii deosebit de atenți au acordat atenție indicațiilor despre care am scris chiar mai sus. Indicator- aceasta este poziția curentă a „cursorului” imaginar în fișier. Aici începe lucrul cu fișierul. Puteți schimba poziția indicatorului folosind funcțiile fseek().:

$handle = fopen("fișiere/a.txt", "rt");
echo $conținut."
";
fseek($handle, 0, SEEK_SET);
$conținut = fread($mâner, 3);
echo $conținut."
";
?>

Așa că mai întâi citim 3 caracter (ca urmare, poziția curentă a indicatorului este deplasată cu 3 posturi). Apoi setăm un pointer la începutul fișierului. Și citim din nou 3 simbol. După cum probabil ați ghicit, am numărat același lucru de două ori. Asta este prima dată 3 simbol, apoi sa întors și a numărat din nou 3 simbol. De asemenea, dacă tu funcțiile fseek(). a inlocui SEEK_SET pe SEEK_CUR, atunci cel de-al doilea parametru nu va seta poziția pointerului, ci o va muta în raport cu locația curentă. Chiar te sfătuiesc să exersezi cu indicatoare, pentru că nu este atât de ușor de înțeles. De asemenea, recomand să încercați să scrieți ceva în fișier în poziția pointerului, de exemplu, chiar la începutul fișierului. Și asigurați-vă că vă explicați rezultatele.

Și, în sfârșit, aș dori să ofer încă câteva funcții care vă permit să lucrați cu fișiere în timp real. nivel simplu: file_put_contens()Și file_get_contents(). Funcţie file_put_contents() scrie într-un fișier și funcția file_get_contents() citește conținut dintr-un fișier. Aceste funcții sunt foarte ușor de utilizat, dar există mai puține opțiuni (deși, de regulă, nu sunt necesare):

file_put_contents(„fișiere/a.txt”, „Acesta este textul 2”);
echo file_get_contents("fișiere/a.txt");
?>

ÎN acest scenariu am scris mai întâi rândul " Acesta este textul 2" într-un fișier, apoi citim conținutul rezultat și îl scoatem. După cum puteți vedea, este dificil să găsim o modalitate mai simplă citind din fisierȘi scrie în fișier.

Acestea sunt toate punctele principale lucrul cu fișiere în PHP.

Despre utilizarea funcțiilor fopen, fclose, feof, fgets, fgetss și fscanf

Să enumerăm toate posibilitățile

Unul dintre avantajele lucrului cu limbile moderne programare precum PHP este numărul oportunități disponibile. PHP ar putea adopta cu ușurință motto-ul limbajului Perl, „Există mai multe moduri de a face ceva”, mai ales când despre care vorbim despre procesarea fișierelor. Dar cu belșug fonduri disponibile, întrebarea devine care dintre ele este mai bună pentru a duce treaba la bun sfârșit. Desigur, răspunsul la această întrebare depinde cu adevărat de obiectivele tale atunci când procesezi fișierul, așa că învățarea tuturor capacităților limbii merită timpul tău.

Metode tradiționale fopen

Metodele fopen sunt poate cele mai familiare programatorilor C și C++ de altădată, deoarece sunt, într-o măsură mai mare sau mai mică, exact instrumentele care există de mult timp. de ani lungi ai fost întotdeauna la îndemână dacă ai lucrat cu aceste limbaje de programare. Pentru oricare dintre aceste metode o faci procedura standard, folosind fopen pentru a deschide fișierul, o funcție pentru a citi datele și apoi fclose pentru a închide fișierul, așa cum se arată în Lista 1.

Listare 1. Deschiderea și citirea unui fișier folosind fgets
$file_handle = fopen("fișierul meu", "r"); while (!feof($file_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Deși aceste funcții sunt familiare celor mai mulți programatori experimentați, permiteți-mi să analizez modul în care funcționează. În realitate, urmați acești pași:

  1. Deschideți fișierul. $file_handle stochează un link către fișierul în sine.
  2. Verificați dacă ați ajuns la sfârșitul fișierului.
  3. Continuați să citiți fișierul până ajungeți la sfârșit, imprimând fiecare rând pe care îl citiți.
  4. Închideți fișierul.

Având în vedere asta, mă voi uita la fiecare funcție de fișier folosită aici.

funcția fopen

Funcția fopen stabilește o conexiune la un fișier. Spun „stabilește o conexiune” pentru că, pe lângă deschiderea unui fișier, fopen poate deschide și un URL:

$fh = fopen("http://127.0.0.1/", "r");

Această linie de program creează un link către pagina de mai sus și vă permite să începeți să o citiți ca fișier local.

Notă: Opțiunea „r” utilizată în fopen indică faptul că fișierul este deschis doar pentru citire. Deoarece scrierea într-un fișier nu este inclusă în domeniul de aplicare a problemelor discutate în acest articol, nu le voi enumera pe toate valori posibile parametru. Cu toate acestea, trebuie să schimbați „r” cu „rb” dacă citiți din fișiere binare pentru compatibilitate multiplatformă. Mai jos este un exemplu de acest tip.

funcţia feof

Comanda feof determină dacă citirea a ajuns la sfârșitul fișierului și returnează True sau False. Bucla afișată în continuă până la sfârșitul fișierului „fișierul meu”. Rețineți că feof returnează și False dacă citiți o adresă URL și conexiunea expiră deoarece nu mai există date de citit.

Funcția fclose

Să sărim peste jumătatea Listingului 1 și să mergem la sfârșit; fclose face opusul fopen: închide conexiunea la fișier sau URL. După executarea acestei funcții, nu veți mai putea citi din fișier sau socket.

funcția fgets

Revenind cu câteva rânduri în Lista 1, ajungeți la inima procesului de procesare a fișierului: citirea efectivă a fișierului. Funcția fgets este arma preferată pentru primul exemplu. Preia o linie de date dintr-un fișier și o returnează ca șir. De acolo puteți afișa datele sau le puteți procesa în alt mod. Exemplul din Lista 1 tipărește întregul fișier.

Dacă decideți să limitați dimensiunea fragmentului de date cu care lucrați, puteți adăuga un argument la fgets pentru a limita lungime maxima linii de date capturate. De exemplu, utilizați următoarele codul programului pentru a limita lungimea liniei la 80 de caractere:

$șir = fgets($file_handle, 81);

Gândiți-vă la „\0”, indicatorul de sfârșit de linie în C și setați lungimea la un caracter mai mare decât aveți nevoie de fapt. După cum puteți vedea, exemplul de mai sus folosește 81, în timp ce aveți nevoie de 80 de caractere. Obișnuiți să adăugați un caracter suplimentar ori de câte ori trebuie să setați o limită de lungime a liniei pentru o anumită funcție.

funcția fread

Funcția fgets este doar una dintre multele funcții disponibile pentru citirea unui fișier. Aceasta este una dintre funcțiile cele mai frecvent utilizate, deoarece procesarea unui fișier linie cu linie în cele mai multe cazuri are cea mai bună sens. De fapt, câteva alte caracteristici oferă capabilități similare. Oricum ar fi, analiza linie cu linie nu este întotdeauna ceea ce aveți nevoie.

Și aici accesăm fread . Funcția fread are un scop ușor diferit de fgets: este destinată să citească din fișiere binare (adică fișiere care nu constau inițial din text care poate fi citit de om). Deoarece conceptul de „șiruri” nu este relevant pentru fișierele binare ( structuri logice datele nu sunt de obicei împărțite în linii), trebuie să specificați numărul de octeți de citit.

$fh = fopen("fișierul meu", "rb"); $date = fread($file_handle, 4096);

Exemplul de mai sus citește 4096 de octeți (4 KB) de date. Rețineți că, indiferent de valoarea pe care o specificați, fread va citi maximum 8192 de octeți (8 KB).

Presupunând că fișierul nu este mai mare de 8 KB, fragmentul de program de mai jos ar trebui să citească întregul fișier într-o singură linie.

$fh = fopen("fișierul meu", "rb"); $date = fread($fh, file size("fișierul meu")); fclose($fh);

Dacă dimensiunea fișierului este mai mare, va trebui să utilizați o buclă pentru a citi restul.

funcția fscanf

Revenind la procesarea șirurilor, fscanf este, de asemenea, succesorul funcției tradiționale de bibliotecă de fișiere C. Dacă nu sunteți familiarizat cu aceasta, fscanf citește câmpurile de date în variabile dintr-un fișier.

listă ($câmp1, $câmp2, $câmp3) = fscanf($fh, „%s %s %s”);

Șirurile de format utilizate în această funcție sunt descrise în multe surse precum PHP.net, așa că nu voi repeta aceste informații aici. Este suficient să spunem că formatarea șirurilor este foarte flexibilă. De asemenea, trebuie menționat că toate câmpurile sunt plasate în variabila returnată de funcție. (În C, acestea ar fi trecute ca argumente.)

funcția fgetss

Funcția fgetss este diferită de funcțiile tradiționale de manipulare a fișierelor și vă oferă o mai bună înțelegere a capacităților PHP. Funcționează ca fgets, dar aruncă orice găsește. Etichete HTML sau PHP, lăsând doar textul gol. Să luăm fișierul HTML de mai jos.

Lista 2. Exemplu fișier HTML
Titlul meu

Dacă înțelegi ce înseamnă „Pentru că nu există nimeni care să nu-ți facă durere”, atunci asculți prea mult din trupa America



Să-l trecem prin funcția fgetss.

Lista 3. Utilizarea fgetss
$file_handle = fopen("fișierul meu", "r"); while (!feof($file_handle)) ( echo = fgetss($file_handle); ) fclose($file_handle);

Acesta este ceea ce veți obține ca rezultat:

Titlul meu Dacă înțelegi ce înseamnă „Pentru că nu e nimeni pentru a nu te doare”, atunci asculți prea mult din trupa America

funcția fpassthru

Indiferent de modul în care citiți datele dintr-un fișier, puteți imprima datele rămase folosind canalul de ieșire standard folosind funcția fpassthru.

fpassthru($fh);

Această funcție imprimă datele, astfel încât să nu fie nevoie să le puneți într-o variabilă.

Procesare neliniară a fișierelor: deplasarea printr-un fișier

Desigur, funcțiile descrise mai sus vă permit doar să citiți dintr-un fișier secvenţial. Fișierele mai complexe pot necesita mutarea în diferite părți ale fișierului la începutul sau la sfârșitul fișierului. Pentru a face acest lucru aveți nevoie de funcția fseek.

fseek($fh, 0);

Exemplul de mai sus se întoarce la începutul fișierului. Dacă nu doriți să treceți chiar la începutul fișierului - să zicem, un kilooctet este suficient - scrieți pur și simplu:

fseek($fh, 1024);

Începând cu PHP V4.0, sunt disponibile și alte câteva opțiuni. De exemplu, dacă trebuie să avansați cu 100 de octeți față de poziția curentă, puteți utiliza următorul cod:

fseek($fh, 100, SEEK_CUR);

În mod similar, întoarcerea cu 100 de octeți se face prin:

fseek($fh, -100, SEEK_CUR);

Dacă doriți să reveniți la poziția de 100 de octeți înainte de sfârșitul fișierului, utilizați în schimb SEEK_END.

fseek($fh, -100, SEEK_END);

Odată ce noua poziție este atinsă, puteți utiliza fgets, fscanf sau o altă funcție pentru a citi datele.

Notă: nu puteți folosi fseek pe descriptori de fișiere care fac referire la o adresă URL.

Capturați un întreg fișier

Acum trecem să ne uităm la unele oportunități unice PHP pentru procesarea fișierelor: procesează blocuri mari de date pe una sau două linii. De exemplu, cum puteți prelua un fișier și afișa întregul său conținut pe pagina dvs. Web? Ei bine, ați văzut un exemplu de utilizare a unei bucle cu fgets. Dar cum putem face asta mai ușor? Procesul este aproape ridicol de simplu folosind fgetcontents, care pune întregul fișier pe o linie.

$my_file = file_get_contents("numefișierul"); echo $fișierul_meu;

Deși acest lucru nu este cea mai bună opțiune, puteți scrie această comandă și mai scurt:

echo file_get_contents("numele meu fișier");

Acest articol este dedicat în primul rând procesării fisiere locale Cu toate acestea, merită remarcat faptul că puteți captura, afișa și analiza și alte pagini Web folosind funcțiile descrise.

echo file_get_contents("http://127.0.0.1/");

Această comandă este de fapt aceeași cu:

$fh = fopen("http://127.0.0.1/", "r"); fpassthru($fh);

S-ar putea să te uiți la aceste exemple și să te gândești: „Este mult de muncă”. Dezvoltatorii PHP sunt de acord cu tine. Deci, puteți scurta comanda de mai sus la:

readfile ("http://127.0.0.1/");

Funcția readfile trimite întregul conținut al unui fișier sau al unei pagini Web în memoria tampon de ieșire implicită. În mod implicit, această comandă afișează un mesaj de eroare atunci când eșuează. Pentru a evita acest comportament (dacă îl doriți), încercați comanda:

@readfile ("http://127.0.0.1/");

Desigur, dacă trebuie să procesați conținutul fișierelor, atunci singura linie returnată de file_get_contents este probabil prea mult. Poate doriți mai întâi să-l împărțiți în bucăți folosind funcția split().

$array = split("\n", file_get_contents("myfile"));

Dar de ce ai nevoie de toată această complexitate dacă există o funcție perfect potrivită care să facă treaba pentru tine? Funcția PHP file() efectuează această sarcină într-un singur pas: returnează o matrice de șiruri ale cărei elemente sunt liniile fișierului.

$array = fisier("fișierul meu");

De remarcat că între cele două exemple de mai sus există mica diferenta. Comanda split elimină semnele de escape linie nouă, în timp ce atunci când utilizați comanda fișier, liniile matricei se termină cu linii noi (la fel ca atunci când utilizați fgets).

Cu toate acestea, capabilitățile PHP depășesc cu mult cele descrise mai sus. Puteți analiza fișiere .ini întregi în stil PHP cu o singură comandă parse_ini_file. Comanda parse_ini_file se aplică fișierelor similare cu cele prezentate în Lista 4.

Lista 4. Exemplu de fișier .ini
; Nume comentariu = Misiunea „Regele Arthur” = Pentru a căuta culoarea preferată a Sfântului Graal = Albastru Samuel Clemens = Mark Twain Caryn Johnson = Whoopi Goldberg

Următoarele comenzi reprezintă un fișier ca o matrice și apoi tipăriți matricea:

$file_array = parse_ini_file("holy_grail.ini"); print_r $file_array;

Rezultatul va fi următorul rezultat:

Lista 5. Ieșire
Array ( => Regele Arthur => Pentru a căuta Sfântul Graal => Albastru => Mark Twain => Whoopi Goldberg)

Bineînțeles că puteți observa asta această comandă secțiuni îmbinate. Aceasta este acțiunea implicită, dar o puteți face cu ușurință setările necesare, folosind al doilea argument al parse_ini_file: process_sections , care este o variabilă tip boolean(Boolean). Setați process_sections la True.

$file_array = parse_ini_file("holy_grail.ini", true); print_r $file_array;

Și rezultatul dvs. va arăta astfel:

Lista 6. Ieșire
Array ( => Array ( => Regele Arthur => Pentru a căuta Sfântul Graal => Albastru) => Array ( => Mark Twain => Whoopi Goldberg))

PHP pune datele într-o matrice multidimensională ușor de analizat.

Dar acesta este doar vârful aisbergului când vine vorba de procesarea fișierelor în PHP. Mai mult funcții complexe, de exemplu tidy_parse_file și xml_parse vă pot ajuta cu analizarea documentelor HTML și, respectiv, XML. Consultați secțiunea pentru a obține mai multe informatii detaliate despre funcționarea acestor funcții. Ambele merită luate în considerare dacă lucrați cu aceste tipuri de fișiere, dar în loc să vă uitați la toate tipurile de fișiere posibile, este posibil să doriți să aruncați o privire mai atentă la conținutul acestui articol, unde există mai multe reguli generale pentru lucrul cu funcțiile pe care le-am descris până acum.

Stilul de programare bun

Nu presupuneți niciodată că totul din programul dvs. va funcționa conform intenției. De exemplu: ce se întâmplă dacă fișierul pe care îl căutați a fost mutat? Ce se întâmplă dacă o modificare a permisiunii vă face să nu puteți citi conținutul unui fișier? Puteți verifica existența unui fișier și drepturile de a-l citi în avans folosind metodele file_exists și is_readable.

Lista 7. Utilizarea file_exists și is_redable
$filename = "fișierul meu"; if (fișier_există($nume fișier) && este_lizibil ($nume fișier)) ($fh = fopen($nume fișier, "r"); # Procesare fclose($fh); )

Cu toate acestea, în practică, această bucată de program va fi probabil exagerată pentru sarcina dvs. Manipularea valorilor returnate de fopen este mai simplă și mai precisă.

if ($fh = fopen($nume fișier, "r")) ( # Se procesează fclose($fh); )

Deoarece fopen returnează False dacă eșuează, acest lucru va asigura că fișierul va fi procesat numai dacă fișierul poate fi deschis. Desigur, dacă fișierul nu există sau este imposibil de citit, te-ai aștepta ca valoarea returnată să fie negativă. Prin urmare, un astfel de control este o capcană în care toți pot cădea. posibile probleme. Alternativ, puteți ieși din program sau puteți afișa un mesaj de eroare dacă fișierul nu poate fi deschis.

La fel ca fopen, funcțiile file_get_contents, file și readfile returnează False dacă fișierul nu poate fi deschis sau procesat. Funcțiile fgets, fgetss, fread, fscanf și fclose returnează, de asemenea, False dacă apare o eroare. Desigur, cu excepția fclose , probabil că ați procesat deja rezultatele pe care le returnează. În ceea ce privește fclose , nu se pot face multe dacă mânerul fișierului nu se închide corect, așa că verificarea valorii de returnare a fclose este în general exagerată.

Alegerea este a ta

PHP nu duce lipsă de moduri eficiente citirea și analizarea fișierelor. Funcțiile clasice precum fread vă pot servi în mod fiabil de cele mai multe ori, sau puteți fi mai atras de simplitatea readfile dacă asta este ceea ce aveți nevoie pentru a finaliza treaba. Alegerea depinde într-adevăr de ceea ce încercați să realizați.

Dacă procesați cantități mari de date, probabil veți găsi fscanf mai util și mai eficient decât, de exemplu, folosind fișierulîn combinație cu comenzile ulterioare split și sprintf. Dacă pur și simplu afișați o cantitate mare de text cu modificări minore, dimpotrivă, utilizați funcțiile fișierului, file_get_contents sau readfile ar putea fi mai potrivite. Această soluție va fi probabil corectă dacă folosind PHP pentru stocarea în cache sau chiar crearea unui server proxy temporar.

PHP oferă multe instrumente pentru lucrul cu fișierele. Cunoaște-te pe fiecare mai bine și află care instrumente sunt cele mai bune pentru proiectul la care lucrezi. Esti invitat larg alege software, folosește-le cel mai eficient și distrează-te procesând fișierele cu PHP.

Ultima actualizare: 1/11/2015

La fel ca majoritatea limbajelor de programare, PHP acceptă lucrul cu fișiere, care sunt una dintre modalitățile de stocare a informațiilor.

Citirea și scrierea fișierelor

Deschiderea și închiderea fișierelor

Pentru a deschide fișiere în PHP, este definită funcția fopen(). Are următoarea definiție: resource fopen(string $filename, string $mode) . Primul parametru $filename reprezintă calea către fișier, iar al doilea este modul de deschidere. În funcție de scopul deschiderii și de tipul fișierului acest parametru poate lua următoarele valori:

    „r”: fișierul este deschis doar în citire. Dacă fișierul nu există, returnează false

    „r+”: fișierul este deschis doar în citire și poate fi scris. Dacă fișierul nu există, returnează false

    "w": Fișierul este deschis pentru scriere. Dacă un astfel de fișier există deja, atunci este suprascris, dacă nu, atunci este creat.

    „w+”: Fișierul este deschis pentru scris și poate fi citit. Dacă un astfel de fișier există deja, atunci este suprascris, dacă nu, atunci este creat.

    "a": Fișierul este deschis pentru scriere. Dacă un astfel de fișier există deja, atunci datele sunt scrise la sfârșitul fișierului, iar datele vechi rămân. Dacă fișierul nu există, acesta este creat

    „a+”: Fișierul este deschis pentru citire și scriere. Dacă fișierul există deja, atunci datele sunt atașate la sfârșitul fișierului. Dacă fișierul nu există, acesta este creat

Ieșirea funcției fopen va fi un descriptor de fișier. Acest mâner este folosit pentru operațiuni cu fișiere și pentru a închide fișierul.

După terminarea lucrărilor, fișierul trebuie închis folosind funcția fclose(), care ia ca parametru un descriptor de fișier. De exemplu, să deschidem și să închidem un fișier:

$fd = fopen("form.php", "r") sau die ("nu s-a putut deschide fișierul"); fclose($fd);

Construcția or die(„text de eroare”) permite scriptului să se oprească și să afișeze un mesaj de eroare dacă funcția fopen nu a putut deschide fișierul.

Citirea unui fișier

Puteți utiliza mai multe funcții pentru a citi un fișier. Pentru citirea rând cu linie, este folosită funcția fgets(), care primește un descriptor de fișier și returnează o linie citită. Să parcurgem întregul fișier linie cu linie:

De fiecare dată când fgets() este apelat, PHP va plasa indicatorul la sfârșitul liniei pe care o citește. Pentru a urmări sfârșitul unui fișier, este utilizată funcția feof(), care returnează adevărat când fișierul se termină. Și până când se ajunge la sfârșitul fișierului, putem folosi funcția fgets().

Citirea întregului fișier

În acest caz, nu trebuie să deschidem în mod explicit fișierul, să obținem un handle și apoi să închidem fișierul.

Blocarea citirii

De asemenea, puteți face o citire bloc cu bloc, adică citiți un anumit număr de octeți dintr-un fișier folosind funcția fread():

Funcția fread() ia doi parametri: mânerul fișierului de citit și numărul de octeți de citit. Când un bloc este citit, indicatorul din fișier se mută la sfârșitul acelui bloc. Și, de asemenea, folosind funcția feof() puteți urmări finalizarea unui fișier.

Scrieți un fișier

Pentru a scrie un fișier, utilizați funcția fwrite(), care scrie următoarea linie în fișier:

O altă funcție fputs() funcționează în mod similar:

Lucrul cu indicatorul de fișier

Când deschideți un fișier pentru citire sau scriere în modul „w”, indicatorul din fișier este plasat la început. La citit Date PHP mută indicatorul din fișier la sfârșitul blocului de date citit. Cu toate acestea, putem, de asemenea, să manipulăm manual indicatorul din fișier și să-l setăm într-o locație arbitrară. Pentru a face acest lucru, trebuie să utilizați funcția fseek, care are următoarea definiție formală:

Int fseek (resursa $handle , int $offset [, int $whence = SEEK_SET ])

Parametrul $handle reprezintă un handle de fișier. Parametrul $offset este offset-ul în octeți relativ la începutul fișierului din care va începe citirea/scrierea. Al treilea parametru opțional specifică modul în care este setat offset-ul. Poate lua trei valori:

    SEEK_SET : valoare implicită, setează offset-ul în octeți offset față de începutul fișierului

    SEEK_CUR : setează offset-ul în octeți offset relativ la începutul poziției curente din fișier

    SEEK_END : setează offset-ul pentru a compensa octeții de la sfârșitul fișierului

Dacă pointerul este instalat cu succes, funcția fseek() returnează 0, iar dacă pointerul nu are succes, returnează -1.

Exemplu de utilizare a funcției:

$fd = fopen("hello.txt", "w+") sau die ("nu s-a putut deschide fișierul"); $str = "Bună lume!"; // linie pentru a scrie fwrite($fd, $str); // scrie linia la început fseek($fd, 0); // plasează indicatorul fișierului la început fwrite($fd, "Oink"); // scrieți linia la început fseek($fd, 0, SEEK_END); // plasează indicatorul la sfârșit fwrite($fd, $str); // scrie o altă linie la sfârșit fclose($fd);

PHP - Lucrul cu fișiere

Fiecare programator ar trebui să poată lucra corect cu fișierele. Acest articol este destinat PHP incepatori programatori, dar „colecția de rețete” va fi utilă și pentru utilizatorii avansați.

Lucrul cu fișierele este împărțit în 3 etape:

  • Deschiderea unui fișier.
  • Manipulare de date.
  • Închiderea dosarului.

I. Deschiderea unui dosar

Pentru a deschide un fișier în PHP, utilizați funcția fopen(). Parametrii necesari pentru această funcție sunt numele fișierului și modul fișier.

Conform documentație PHP Se disting următoarele tipuri de moduri de fișiere:

  • r – deschideți fișierul pentru doar citire.
  • r+ - deschide un fișier pentru citire și scriere în același timp.
  • w – crearea unuia nou dosar gol. Dacă un astfel de fișier există deja în momentul apelului, acesta este distrus.
  • w+ - similar cu r+, numai dacă fișierul există în momentul apelării, conținutul acestuia este șters.
  • a – se deschide fișier existentîn modul de scriere, indicatorul este deplasat la ultimul octet al fișierului (până la sfârșitul fișierului).
  • a+ - deschide un fișier în modul citire-scriere, cu indicatorul deplasat la ultimul octet al fișierului (până la sfârșitul fișierului). Conținutul fișierului nu este șters.

Notă: mai poate exista un parametru opțional la sfârșitul oricăreia dintre linii: b sau t. Dacă este specificat b, fișierul este deschis în modul binar de citire/scriere. Dacă t, atunci modul de traducere a fluxului de linie este setat pentru fișier, adică. este perceput ca textual.

Pentru a demonstra, luați în considerare următorul scenariu:

//Deschide un fișier în moduri diferite

$fp = fopen("counter.txt", "r"); // Modul binar

$fp = fopen("counter.txt", "rt"); // Modul text

$fp = fopen("http://www.yandex.ru", "r");// Deschide o conexiune HTTP pentru citire

$fp = fopen("ftp://utilizator: [email protected]", "w"); //Deschide o conexiune FTP indicând numele de conectare și parola

II. Manipularea datelor fișierelor

Puteți scrie date într-un fișier folosind PHP folosind funcția fwrite(). Această funcție preia 2 parametri obligatorii și 1 opțional. Parametrii necesari sunt descriptorul de fișier și modul fișier:

$fp = fopen("counter.txt", "a"); // Deschideți fișierul în modul de scriere

$mytext = "Trebuie să scriem această linie\r\n"; // Șir sursă

$test = fwrite($fp, $mytext); // Scrieți în fișier

Dacă ($test)

Echo „Datele au fost introduse cu succes în fișier.”;

Altfel

Echo „Eroare la scrierea în fișier.”;

Fclose($fp); //Închide fișierul

Pentru a citi un fișier linie cu linie, utilizați funcția fgets(). Funcția preia 2 parametri necesari:

Dacă ($fp)

În timp ce (!feof($fp))

$mytext = fgets($fp, 999);

Echo $mytext."
";

Altfel

Fclose($fp);

Notă: În acest exemplu, valoarea 999 specifică numărul de caractere care vor fi citite până când pointerul ajunge la sfârșitul fișierului (EOF).

Echo readfile ("counter.txt");

De asemenea, puteți utiliza funcția fpassthru() care ia 1 parametru necesar. Înainte de a utiliza această caracteristică, trebuie să deschideți fișierul în modul Citire. Când fișierul este citit, funcția închide automat fișierul (și descriptorul fișierului devine invalid).

$fp = fopen("counter.txt", "r"); // Deschideți fișierul în modul citire

Dacă ($fp)

Echo fpassthru($fp);

Altfel

Echo „Eroare la deschiderea fișierului”;

Foarte des există situații în care este necesar să citiți conținutul unui site într-o matrice. Această caracteristică implică utilizarea funcției file(). Când această funcție este apelată, fiecare linie a fișierului va fi stocată într-un element separat al matricei specificate.

Notă: Funcția file() nu trebuie utilizată pe fișiere binare (binary-safe). Nu este sigur în ceea ce privește citirea fișierelor binare și, dacă întâlnește undeva un caracter de final de fișier (EOF), nu garantează că vei citi întregul fișier binar.

$file_array = fisier("counter.txt"); // Citiți fișierul în $file_array

// Lucrul cu date matrice

Notă: Lucrul cu matrice este descris în detaliu aici, autori: Mukhametshin D.F., Simdyanov I.V.

La sfârșitul articolului, veți găsi o „carte de rețete” bună pe matrice, care oferă soluții la multe probleme pe care le întâmpină un programator web în fiecare zi.

Să ne imaginăm o situație în care un fișier trebuie citit caracter cu caracter. Pentru a face acest lucru, putem folosi funcția fgetc(). Funcția preia un singur parametru. Funcția este utilă dacă trebuie să găsim orice caracter sau numărul de caractere identice.

$fp = fopen("counter.txt", "r"); // Deschideți fișierul în modul citire

Dacă ($fp)

În timp ce(!feof($fp))

$car = fgetc($fp);

Dacă ($car == "c")

$i = $i + 1;// Găsiți simbolul „c”

Echo „Numărul de litere „c” din fișier: „. $i;

Altfel echo „Eroare la deschiderea fișierului”;

III. Închiderea unui fișier

Fișierul este închis utilizând funcția fclose(), care ia 1 parametru necesar.

$fp = fopen("counter.txt", "r");

Dacă ($fp)

Echo „Fișier deschis”;

Fclose($fp); // Închiderea fișierului

Culegere de retete

1) Trebuie să verificăm dacă acesta sau acel fișier există. Pentru a face acest lucru, vom folosi funcția file_exists().

myfile("counter.txt"); // Folosește funcția myfile, trecând numele fișierului ca argument

function myfile($name) //Creeaza o functie pentru a verifica existenta unui fisier

If (file_exists($name)) echo "Fișierul există";

Notă: funcția file_exists nu verifică fișierele de pe serverul web la distanță. Pentru ca funcția să funcționeze corect, fișierul cu scriptul trebuie să fie localizat pe același server cu fișierul verificat.

2) Determinați dimensiunea fișierului folosind funcția filesize().

myfile("counter.txt");

//Creează o funcție pentru a verifica existența unui fișier și a determina dimensiunea fișierului

funcția fișierul meu ($nume)

If (file_exists($name)) echo "File size: ".filesize($name)." bytes";

Altfel echo „Fișierul nu există”;

3) Creați un fișier temporar folosind funcția tmpfile().

$myfile = tmpfile();

// Scrieți într-un fișier temporar

Fwrite($myfile, "Această linie este scrisă într-un fișier temporar.");

Fseek($fișierul meu, 0); // Setați indicatorul fișierului

Echo fread($fișierul meu, 1024); // scoate conținutul fișierului

4) Trebuie să determinați numărul de linii din fișier. Pentru a face acest lucru, folosim funcția count().

$fp = fisier("counter.txt");

Echo „Numărul de linii în fișier: „.count($fp);

5) Trebuie să folosim un mecanism de blocare a fișierelor

$fp = fopen("counter.txt", "a");

Flock($fp, LOCK_EX); // Blocați fișierul pentru scriere

Fwrite($fp, „Șir de scris”);

Flock($fp, LOCK_UN); // Deblocați

Fclose($fp);

6) Trebuie să eliminăm o anumită linie din fișier

$num_stroka = 5; //Ștergeți linia 5 din fișier

$fisier = fisier("counter.txt"); // Citiți întregul fișier într-o matrice

Pentru($i = 0; $i< sizeof($file); $i++)

If($i == $num_stroka) unset($fișier[$i]);

$fp = fopen("counter.txt", "w");

Fputs($fp, implode("", $fișier));

Fclose($fp);

7) Determinarea tipului de fișier. Folosim funcția filetype(), care ia un singur parametru

$mytype = filetype("counter.txt");

Echo „Tipul fișierului: „.$mytype;

După apel, șirul poate conține una dintre următoarele valori:

fișier – fișier obișnuit

dir – director

fifo – canal fifo

bloc – dispozitiv orientat pe bloc

char – dispozitiv orientat pe caracter

necunoscut – tip de fișier necunoscut

8) Dacă doriți să vizualizați toți parametrii unui fișier, ar trebui să utilizați funcția stat().

$filename = stat("counter.txt");

Ecou"

";

Print_r($nume fișier);

Ecou"

";

9) Trebuie să ștergem fișierul, să folosim funcția ftruncate().

$fp = fopen("counter.txt", "a"); //Deschideți fișierul în modul de înregistrare

Ftruncate($fp, 0) // șterge fișierul

10) Trebuie să aflăm data ultimei modificări a fișierului, folosim funcția filecttime(). Funcția returnează o valoare de timp în formă de marcaj temporal Unix.

Echo filecttime ("counter.txt");

JavaScript este blocat în browserul dvs. Vă rugăm să activați JavaScript pentru ca site-ul să funcționeze!

Lucrul cu fișiere

Manipularea fișierelor este un instrument important al PHP.

Inclusiv fișiere externe

Puteți include un fișier în fiecare document PHP folosind instrucțiunea include(). Argumentul său este calea către fișier. Această instrucțiune este convenabilă de utilizat atunci când aveți bucăți identice de cod în multe programe PHP. Conținutul fișierului include este procesat ca text HTML simplu. Pentru ca conținutul acestui fișier să fie procesat ca program PHP, acesta trebuie să fie înconjurat de etichete de deschidere și de închidere PHP.

Exemplul 1

Folosind include() ...Parte principală..."; ?>

Ecou"

... salutări generale...

"

REZULTAT EXEMPLULUI 1:

... salutări generale...

...Parte principală...

În acest caz, rezultatul va fi același dacă fișierul include top.php conține doar o linie de text HTML:

... salutări generale...

Fișierele incluse pot returna valori precum funcții. Utilizarea instrucțiunii return încheie execuția acestui fișier în același mod ca și funcțiile.

Exemplul 2

Folosind o instrucțiune include() care returnează o valoare Fișierul include a returnat $res"; ?>

Includeți fișierul top.php cu programul PHP:

REZULTAT EXEMPLULUI 2:

Fișierul include a returnat 56

Instrucțiuni include() poate fi folosit în interiorul unei bucle. Într-o buclă include() este executat la fiecare iterație. Acesta poate fi folosit pentru a include mai multe fișiere. De exemplu:

Pentru ($i=1; $i<=5; $i++) include("incfile{$i}.htm");

Determinarea numelui fișierului include și încărcarea acestuia se repetă de fiecare dată când apelați include(). Aceasta înseamnă că, dacă conținutul fișierului include s-a modificat de la apelul anterior, noul conținut va fi încărcat.

Operator include() poate fi inclus și în corpul unei declarații condiționate.

Deși este asemănător ca aspect cu funcționarea, include() nu este o funcție, ci este un construct de limbaj special.

Pentru a indica faptul că fișierul trebuie inclus o singură dată, se folosește operatorul include_once().

Analiza dosarului

PHP conține multe funcții care oferă informații despre fișiere. Cele mai utilizate sunt:

  • fisierul exista()- determină existenţa unui dosar. De exemplu: if (!file_exists("aaa.php")) echo "Atenție! Fișierul aaa.php nu a fost găsit!";
  • is_file()- determină dacă obiectul examinat este un fișier. De exemplu: if (is_file("bbb.txt")) echo "Poți fi sigur, bbb.txt este un fișier";
  • is_dir()- determină dacă obiectul examinat este un director. De exemplu: if (is_dir("/tmp")) echo "Într-adevăr, /tmp este un director";
  • este_citit()- determină dacă fișierul este lizibil. De exemplu: if (is_readable("db.dbf")) echo "db.dbf poate fi citit";
  • is_writable()- determină dacă fișierul poate fi scris. De exemplu: if (is_writable("db.dbf")) echo "Puteți scrie în db.dbf";
  • mărime fișier()- determină dimensiunea fișierului în octeți.
  • filmtime()- determină data și ora la care fișierul a fost modificat ultima dată.
  • fileatime()- determină data și ora ultimului acces la fișier.

Exemplul 3

Informații despre fișier "; echo "$f - ".(is_dir($f) ? "" : "nu ")."
"; echo "$f ".(este_citit($f) ? "": "nu")."se poate citi
"; echo "$f ".(is_writable($f) ? "": "nu ")."
„; echo „dimensiunea lui $f în octeți este „.(dimensiunea fișierului($f)).”
"; echo "$f a fost modificat ultima dată - ".(data("d M Y H:i", ora fișierului ($f)))."
"; echo "$f a fost accesat ultima dată - ".(data("d M Y H:i", fileatime($f)))."
"; } ?>

REZULTAT EXEMPLULUI 3:

Top.php - fișierul top.php - nu este un director top.php poate fi citit. 20 octombrie 2005 14:01

Atenţie! Aceste funcții nu funcționează cu fișierele șterse. Ele pot fi aplicate numai sistemului de fișiere local.

Gestionarea fișierelor

PHP conține multe funcții de gestionare a fișierelor. Cele mai utilizate sunt:

  • atingere()- creează un fișier gol cu ​​numele dat. Dacă un astfel de fișier există deja, funcția va schimba data modificării. De exemplu: touch("ex1.txt");
  • copie()- copiază fișierul. Pentru a copia fișiere în PHP, utilizați funcția de copiere ($sursă, $rezultat). Trebuie doar să treacă doi parametri - sursa $sursă și numele fișierului de copiere - $rezultat. Este de remarcat faptul că ar trebui să indicați adresele complete ale fișierelor. Un exemplu de utilizare a funcției de copiere:

  • deconectați()- șterge fișierul specificat. De exemplu:
  • fopen()- deschide un fișier local sau la distanță și returnează un pointer către acesta. Pointerul este folosit în toate operațiunile asupra conținutului fișierului. Argumente: numele fișierului și modul de deschidere.
    rcitind. Indicatorul fișierului este setat la începutul fișierului
    r+citire si scriere. Indicatorul fișierului este setat la începutul fișierului
    wrecord. Indicatorul fișierului este setat la începutul fișierului. Se pierde tot conținutul vechi al fișierului. Dacă un fișier cu numele specificat nu există, funcția încearcă să-l creeze
    w+citire si scriere. Indicatorul fișierului este setat la începutul fișierului. Se pierde tot conținutul vechi al fișierului. Dacă un fișier cu numele specificat nu există, funcția încearcă să-l creeze
    Arecord. Indicatorul fișierului este setat la sfârșitul fișierului. Dacă un fișier cu numele specificat nu există, funcția încearcă să-l creeze
    a+citire si scriere. Indicatorul fișierului este setat la sfârșitul fișierului. Dacă un fișier cu numele specificat nu există, funcția încearcă să-l creeze

    De exemplu:

    $fp = fopen("http://www.php.net/", "r"); // pentru citirea $fp = fopen("ex1.txt", "w"); // pentru înregistrarea $fp = fopen("ex2.txt", "a"); // pentru a adăuga la sfârșit

    Dacă nu puteți deschide fișierul, puteți întrerupe programul. De exemplu:

    $fp = fopen("ex1.txt", "w") sau die ("Eșuat la deschiderea fișierului");

  • fclose()- închide dosarul. Argument: Pointerul fișierului primit mai devreme de la funcția fopen(). De exemplu: fclose($fp);
  • feof()- verificarea finalului dosarului. Argument: indicator de fișier.
  • fgetc()- citirea următorului caracter din fișier. Argument: indicator de fișier.
  • fgets()- citirea următoarei rânduri a fișierului. Argumente: indicatorul fișierului și lungimea șirului de citit. Operația se încheie fie după ce numărul specificat de caractere a fost citit, fie când este detectat sfârșitul liniei sau al fișierului.

    Exemplul 4

    Citirea liniilor dintr-un fișier "; ?>

  • friad()- functie generala de citire dintr-un fisier. Argumente: indicatorul fișierului și numărul de caractere de citit.
  • fseek()- indentarea de la începutul dosarului. Argumente: file pointer și offset.

    Exemplul 5

    Se afișează a doua jumătate a fișierului

  • fputs()- scrierea unei linii într-un fișier. Argumente: indicator de fișier și șir.
  • fwrite()- analog complet al funcției fputs().

    Exemplul 6

    Înregistrare și anexare la fișier

  • turmă()- blochează fișierul, adică împiedică alți utilizatori să citească sau să scrie în fișier până când persoana care deține lacătul a terminat de lucrat la fișier. Argumente: indicatorul fișierului și numărul modului de blocare.

    Exemplul 7

    Blocare fișier

    Blocare cu turmă() nu este absolută. Doar acele programe care folosesc și această funcție o vor ține cont.

Versiunea PHP >= 4.3.0 are noi funcții convenabile pentru lucrul cu fișiere:

  • file_get_contents()- citiți întregul fișier sau adresa URL
  • file_put_contents()- scrieți fișierul

Lucrul cu cataloage

PHP are mai multe funcții pentru a lucra cu directoare:

  • mkdir()- crearea unui catalog. Argumente: calea directorului și modul de acces. Modul de acces este un număr octal de trei cifre cu un zero la început. Primul număr este dreptul de acces pentru proprietar, al doilea este pentru grup, iar al treilea este pentru toți ceilalți. Pe Windows, modul de acces este ignorat. Sistemul UNIX definește următoarele drepturi de acces:

    De exemplu, Control total pentru proprietar, Citiți și Rulați pentru grup și Rulați pentru toți ceilalți:

    Mkdir("testdir", 0751);

  • rmdir()- ștergerea unui director. Argument: calea directorului. Puteți șterge un director gol doar dacă aveți dreptul să faceți acest lucru. Dacă are succes, funcția returnează true.
  • opendir()- deschiderea unui director. Argument: calea directorului. Dacă apare o eroare, funcția returnează false. O eroare la deschidere poate fi cauzată de faptul că directorul nu există sau programul nu are permisiunea de a-l citi.
  • readdir()- citirea directorului. Argument: calea directorului. Returnează un șir care conține numele fișierului sau subdirectorului găsit. Când se ajunge la sfârșitul directorului, funcția returnează false.

    Exemplul 8

    Citirea unui director "; ?>

    Expresia de testare a buclei nu va funcționa conform așteptărilor dacă există un fișier numit „0” în director. În acest caz, numele „0” va fi convertit în 0, determinând terminarea buclei. Acest lucru poate fi evitat prin luarea unor măsuri de securitate suplimentare prin schimbarea expresiei de verificare:

    Gettype($f = readdir($dh)) != „boolean”

    Pe lângă utilizarea funcției fgetc() fgets() fgetss(), puteți folosi
    $fișier = fișier($nume fișier). Citește $filename în array($file).

    Exemplu:

    $fisier=fisier($nume fisier); pentru ($i=0; $i<=count($file); $i++) { echo $file[$i], "
    "; }

Transferarea unui fișier de pe server. Descărcare fișier. Descarca.

Descărcare manuală sau cum să utilizați un script pentru a deschide o fereastră de salvare a fișierelor pentru utilizator. Pentru ca browserul să deschidă dialogul „Salvare fișier” cu numele fișierului file.dat, scriptul trebuie să trimită următoarele antete:

Antet("Conținut-Dispoziție: atașament; nume fișier=fișier.dat"); header("Content-Type: application/x-force-download; name=\"file.dat\"");

Un exemplu gata făcut de trimitere a unui fișier de pe disc:

Nu ar strica să faceți referire la script ca http://.../download.php?file.dat, altfel browserele bazate pe Mozilla ar putea încerca să scrie fișierul ca file.dat.php. sau specificați atributul de descărcare: Descărcare Notă: Nu utilizați antetul ("Cache-Control: no-cache") în astfel de scripturi, majoritatea versiunilor de Internet Explorer nu vor putea descărca fișierul;

Următorul exemplu de script demonstrează cum să organizezi asistența pentru descărcare:

Se presupune că $cd este calea fișierului, $fn este numele fișieruluiCum se transferă un fișier pe server?

Funcții pentru lucrul cu directoare

  • chdir() - Schimbă directorul
  • boolean chdir (string str)

    Schimbă directorul PHP curent cu cel specificat ca parametru str. Returnează TRUE la succes, FALSE la eroare

  • chroot() - Schimbă directorul rădăcină
  • boolean chroot (string str)

    Schimbă directorul rădăcină al procesului curent cu cel trecut ca parametru str. Returnează TRUE la succes, FALSE la eroare.

    Notă: Această funcție nu este implementată pentru platformele Windows.

  • closedir() - Eliberează un handle de director
  • void closedir (catalog de resurse)

    Închide fluxul asociat cu catalogul și transmis ca parametru de catalog. Înainte de a utiliza această funcție, fluxul trebuie deschis folosind funcția opendir().

    dir - Clasa director

class dir ( dir (șir str) șir cale resursă handle șir citit (void) void rewind (void) void close (void) )

Un mecanism orientat pe pseudo-obiect pentru citirea directorului trecut în parametrul directorului. Din momentul în care directorul este deschis, două proprietăți ale clasei devin disponibile. Proprietatea „mâner” poate fi utilizată cu alte funcții de manipulare a directoarelor, cum ar fi funcțiile readdir() , rewinddir() și closedir(). Proprietatea „cale” conține calea către directorul deschis. Sunt disponibile trei metode: citire, derulare înapoi și închidere.

Vă rugăm să rețineți modul în care valoarea returnată a metodelor clasei dir() este verificată în exemplul de mai jos. Acest exemplu verifică dacă valoarea (expresiile sunt identice atunci când sunt egale și de același tip - vezi capitolul Operatori de comparație pentru mai multe informații) este egală cu FALSE, deoarece în caz contrar, orice intrare de director al cărei nume poate fi exprimat ca FALSE se va opri ciclul.

Exemplu de cod:

mâner."
\n"; echo "Cale: ".$d->cale."
\n"; while (fals !== ($entry = $d->read())) ( echo $entry."
\n"; ) $d->close(); ?>

Notă: Ordinea în care metoda „citire” returnează intrările de director depinde de sistemul de operare.

Notă: De asemenea, PHP definește automat o clasă internă numită Director, ceea ce înseamnă că nu veți putea să vă definiți propriile clase cu același nume.


  • getcwd() - Obține numele directorului de lucru curent
  • șir getcwd(void)

    Returnează numele directorului de lucru curent.


  • opendir() - Deschide un director
  • resource opendir (calea șirului)

    Returnează un handle de director pentru utilizare ulterioară cu funcțiile closedir(), readdir() și rewinddir().

    Dacă calea nu există sau directorul situat la calea specificată nu poate fi deschis din cauza restricțiilor legale sau a erorilor sistemului de fișiere, funcția opendir() returnează FALSE și generează un mesaj de eroare PHP de nivelul E_WARNING. Puteți suprima un mesaj de eroare prefixând numele funcției opendir() cu simbolul „@”.

    Exemplu de cod

    Începând de la PHP 4.3.0, parametrul de cale poate fi, de asemenea, orice URL, care are ca rezultat o listă de fișiere și directoare pentru ftp:// url packer a fost adăugat.


  • readdir - Obține un element de director prin mânerul său
  • string readdir (catalog de resurse)

    Returnează numele următoarei intrări secvențiale din director. Numele elementelor sunt returnate în ordine, în funcție de sistemul de fișiere.

    Observați modul în care funcția readdir() returnează valoarea din exemplul de mai jos. Acest exemplu verifică dacă o valoare (expresiile sunt identice atunci când sunt egale și sunt valori de același tip - vezi capitolul Operatori de comparație pentru mai multe informații) este identică cu FALS deoarece, în caz contrar, orice intrare de director al cărei nume poate fi exprimat ca FALS , va opri bucla (de exemplu, un element numit „0”).

    Exemplu de cod

    Rețineți că funcția readdir() returnează, de asemenea, elemente numite, iar dacă nu doriți să primiți acele valori, aruncați-le:

    Exemplu de cod


  • rewinddir() - Resetează mânerul directorului
  • void rewinddir (catalog de resurse)

    Resetează fluxul de catalog transmis în parametrul de catalog pentru a indica începutul catalogului


  • scandir() - Obține o listă de fișiere și directoare situate la calea specificată
  • matrice scandir (catalog de șiruri [, int order])

    Returnează o matrice care conține numele fișierelor și directoarelor situate de-a lungul căii transmise în parametrul catalog. Dacă directorul nu este un director, funcția returnează FALSE și generează un mesaj de eroare E_WARNING.

    În mod implicit, sortarea se face în ordine alfabetică în ordine crescătoare. Dacă este specificat parametrul opțional de ordine (egal cu 1), sortarea se face în ordine alfabetică în ordine descrescătoare. Exemplu de cod

    Rezultatul va fi ceva de genul:

    Matrice ( => . => .. => bar.php => foo.txt => somedir) Matrice ( => somedir => foo.txt => bar.php => .. => .)

    Exemplu de cod

    EXEMPLU DE REZULTAT:

    Matrice ( => . => .. => bar.php => foo.txt => somedir) Matrice ( => somedir => foo.txt => bar.php => .. => .)