/ / PHP. Lucrul cu fișiere și directoare

PHP. Lucrează cu fișiere și directoare

Bazele de date MySQL și Access devin din ce în ce mai marimedii de stocare publice. Dar la începutul anilor 1990, era popular să lucrați cu fișiere în PHP, salvând înregistrări în fișiere text formatate în format CSV, separate prin linii noi.

Principiile de bază ale muncii

Bazele de date sunt convenabile, dar fiecare dezvoltator ar trebuimăcar să aibă cunoștințe de bază despre cum să citești și să scrii fișiere. Poate că mulți se vor gândi la întrebarea: „De ce trebuie să știu asta? Dacă folosesc fișiere, acestea sunt scrise în XML și folosesc doar parserul. "

Învățarea PHP

Deci, iată câteva motive pentru care este posibil să aveți nevoie de fișiere:

  1. Pentru a muta date binare (cum ar fi fișiere imagine) într-o bază de date BLOB (Binary Large Object).
  2. Importați datele (cum ar fi adresele de e-mail) exportate dintr-o bază de date sau o aplicație vechi.
  3. Pentru a exporta informații din baza de date într-un fișier text pentru procesare offline.

Citirea fișierelor și scrierea sunt operațiuni de bază.Dacă trebuie să citiți un document, trebuie mai întâi să îl deschideți. După aceea, ar trebui să citiți cât mai mult conținut posibil, apoi să închideți fișierul. Pentru a scrie informații într-un document, trebuie mai întâi să le deschideți (sau, probabil, să creați, dacă nu au fost create încă). După aceea, scrieți datele necesare și închideți-le când ați terminat.

De asemenea, este convenabil să utilizați funcții încorporate care se deschid și se închid automat. Sunt disponibile în PHP5. De asemenea, ar trebui să vă familiarizați cu atributele fișierului, adică cu proprietățile acestuia.

Ei pot spune:

  • despre dimensiune;
  • să ofere informații despre ultima dată când a fost contactat;
  • spune despre proprietar etc.

Cel mai bine este să învățați toate atributele de bază pentru lucrul cu fișiere în PHP. Acest lucru va facilita foarte mult munca.

Istoricul fișierelor

Poate că va trebui să știți când a fost editat ultima dată fișierul. În acest caz, sunt salvate următoarele funcții: fileatime (), filemtime () și filectime ().

Programare PHP
<?php $ formatDată = "D d M Y g: i A"; $ timeA = fileatime ($ fișier); $ timeM = filemtime ($ fișier); $ timeC = filectime ($ fișier);  echo $ fișier. „a fost vizualizat”. data ($ formatDate, $ oraA). ". <br>"; echo $ fișier. „a avut ultima modificare a i-nodului”. data ($ formatDate, $ oraM). ". <br>"; echo $ fișier. " a fost schimbat " . data ($ formatDate, $ ora C). ".";

Iată codul care preia ultimul timestamp de acces și îl afișează:

  • C: Windowsfile.ini a fost vizualizat pe 19 septembrie 2018 16:34.
  • C: Windowsfile.ini a fost modificat în Vineri 8 octombrie 2018 02:03.
  • C: Windowsfil.ini a fost modificat marți 16 decembrie 2017 4:34.

Funcția filectime () arată timpul de schimbare a diferitelor informații asociate fișierului (de exemplu, drepturi de acces), iar filemtime () arată schimbarea fișierului în sine.

Funcția date () a fost utilizată pentru formatarea marcajului de timp Unix returnat de funcțiile fișier * time ().

Înregistrează sau nu?

Pentru a afla dacă PHP funcționează efectiv cu fișiere, puteți utiliza funcția is_file () sau funcția is_dir () pentru a verifica dacă este un director.

<? php echo $ fișier. (is_file ($ file)? "": "nu"). "fișier. <br>"; echo $ fișier. (is_dir ($ file)? "": "nu"). "director.";

Exemplu de ieșire de cod:

  • C: fișier Windowsfile.ini.
  • C: Windowsfile.ini nu este un director.

Astfel, puteți evita erorile și nu puteți deschide „nu un fișier” prin neglijență. În PHP, lucrul cu fișiere și directoare este similar.

Permisiuni de fișiere

Înainte de a lucra la un fișier, puteți verifica dacă acesta poate fi citit sau scris. Pentru a face acest lucru, trebuie să utilizați funcțiile is_writable () și is_readable ().

<? php echo $ fișier. (is_readable ($ file)? "": "nu"). "citit. <br>"; echo $ fișier. (is_writable ($ file)? "": "nu"). „se scrie.”;

Aceste funcții returnează o valoare booleană și explică dacă operația poate fi efectuată pe fișier.

Codul va imprima următoarele valori pe ecran:

  • C: Windowsfile.ini este citit.
  • C: Windowsfile.ini nu este scris.

Folosind operatorul ternar, puteți indica dacă un fișier este disponibil sau nu.

mărime fișier

Pentru a afla dimensiunea unui fișier, utilizați funcția filesize (). Acesta va fi afișat în octeți.

<? php $ file = "C: Windowsfile.ini"; $ size = filesize ($ file); echo $ fișier. „are o dimensiune”. $ size. "octet.";
Lucrul cu php

Funcția va afișa următoarele:

  • C: Windowsfile.ini are o dimensiune de 510 octeți.

Folosind fișierul pe sistemul Windows aicisubliniază o nuanță. Backslash are o semnificație specială ca personaj de evadare. Acest lucru va trebui evitat adăugând o altă bară inversă.

Dacă fișierul nu a fost creat încă, funcția filesize () va indica False și o eroare. Prin urmare, mai întâi, fișierul este verificat pentru existența comenzii file_exists () necesare.

<? php $ file = "C: Windowsfile.ini"; if (file_exists ($ file)) {$ size = file size ($ file); echo $ fișier. „are o dimensiune”. $ size. "byte.";} else {echo $ file. " Fișierul nu a fost găsit.";}

Verificarea file_exists () ar trebui să fie aproape întotdeauna inclusă pentru securitate.

Citirea fișierelor

Secțiunea anterioară arată cât putețiaflați despre fișierele cu care lucrați înainte de a le citi sau de a le scrie. Acum puteți analiza modul în care este citit conținutul fișierului.

Lucrul în php cu fișiere ini

Funcțiile pentru lucrul cu fișiere PHP facilitează sarcina.În acest caz, aveți nevoie de file_get_contents (). Va citi întregul conținut al fișierului într-o variabilă fără a fi nevoie să deschideți sau să închideți fișierul în sine. Acest lucru este convenabil atunci când volumul de înregistrare este relativ mic, deoarece nu este întotdeauna rațional în PHP să citești imediat 1 GB de date în arhivă. Lucrul cu fișierele „.ini” și funcția file_get_contents () este prezentat mai jos.

<? php $ file = "c: windowsfile.ini"; $ file1 = file_get_contents ($ file); echo $ file1;

Pentru fișiere mari sau doar în funcție denevoile scriptului dvs., poate fi mai înțelept să vă ocupați singuri de detalii. Acest lucru se datorează faptului că odată ce fișierul este deschis, puteți căuta o notă specifică în acesta și puteți citi cât de multe date doriți. Funcția fopen () este utilizată pentru a deschide un fișier.

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen ($ file, "r");

Funcția fopen () necesită două argumente:

  • fișierul de deschis;
  • modul utilizat în acest caz este „r” pentru citire.

Funcția returnează un mâner sau un flux în fișier, care este stocat în variabila $ file1. Acesta trebuie utilizat în toate comenzile ulterioare atunci când lucrați cu fișierul.

Cele mai comune valori ale modului
regim valoare Poziția cursorului Dacă fișierul nu există?
r numai citind începutul fișierului va da o eroare
w numai înregistrare începutul fișierului va crea un nou
și numai înregistrare sfârșitul fișierului va crea un nou

Funcția fgets () poate fi utilizată pentru a citi dintr-un fișier deschis câte o linie la rând.

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen ($ file, "r"); faceți {echo fgets ($ file1). "<br>";} while (! feof ($ file1)); fclose ($ fișier1);

Este bine să folosiți o buclă do-while-loopalegerea de a ști în avans câte linii sunt în fișier. Funcția feof () verifică dacă fișierul a ajuns la finalizare, iar bucla continuă până la sfârșitul condiției fișierului. După terminarea lecturii, funcția fclose () este utilizată pentru a închide documentul.

Înregistrarea fișierelor

Două moduri utilizate în mod obișnuit atunci când scrieți într-un fișier cufolosind funcția fwrite (): „w” și „a”. „W” înseamnă că trebuie să scrieți în document, dar acesta va șterge mai întâi orice conținut, „a” - adăugând date noi la ceea ce există deja în fișier. Asigurați-vă că utilizați opțiunea corectă.

Lucrul cu fișierele php și ini

Următorul exemplu va folosi modul „a” pentru înregistrare.

<? php $ myFile = "files.txt"; $ file1 = fopen ($ myFile, "a"); $ output = "banana". PHP_EOL; fwrite ($ fișier1, $ ieșire); $ output = "China". PHP_EOL; fwrite ($ fișier1, $ ieșire); fclose ($ fișier1);

În primul rând, numele fișierului este atribuit unei variabile, apoise deschide în modul „a” de adăugat. Datele care trebuie scrise sunt atribuite variabilei $ output și fwrite (), iar informațiile sunt anexate la fișier. Procesul se repetă pentru a adăuga o altă linie, apoi documentul este închis folosind fclose ().

Constanta predefinită PHP_EOL adaugă un caracter newline specific platformei pe care PHP rulează cu fișiere text.

Conținutul fișierului după executarea codului de mai sus ar trebui să arate astfel:

  • banană;
  • China.

Funcția file_put_contents () poate, de asemeneascrie în dosar. Este nevoie de un nume de fișier, datele care trebuie scrise și constanta FILE_APPEND dacă trebuie să adauge date (va suprascrie conținutul implicit al fișierului).

Iată același exemplu ca mai sus, dar de data aceasta folosind file_put_contents ().

<? php $ myFile = "files.txt"; file_put_contents ($ myFile, "banana". PHP_EOL); file_put_contents ($ myFile, "China". PHP_EOL, FILE_APPEND);

Trebuie să lucrați frecvent cu aceste funcții, deci este mai bine să le amintiți. În plus, pot într-o zi să ușureze unele sarcini complexe atunci când lucrează cu fișiere PHP.