Bazele de date MySQL și Access devin din ce în ce mai multmijloace accesibile de stocare a datelor. Dar, la începutul anilor 1990, a fost popular să lucreze cu fișiere în PHP, salvând înregistrări în fișiere text formatate în format CSV, separate de linii noi.
Bazele de date sunt convenabile, dar fiecare dezvoltator ar trebuicel puțin au câteva cunoștințe de bază despre cum să citească și să scrie fișiere. Poate că mulți se vor gândi la întrebarea: "De ce trebuie să știu asta?" Dacă folosesc fișiere, ele sunt scrise în XML și folosesc doar parserul. "
Deci, iată câteva motive pentru care s-ar putea să aveți nevoie de fișiere:
Citirea fișierelor și scrierea sunt operații de bază.Dacă doriți să citiți documentul, trebuie mai întâi să îl deschideți. După aceea, citiți cât mai mult conținut posibil, apoi închideți fișierul. Pentru a scrie informații într-un document, trebuie mai întâi să îl deschideți (sau, poate, să îl creați, dacă acesta nu este deja creat). După aceea, înregistrați datele necesare și închideți-le la sfârșit.
De asemenea, este convenabil să utilizați funcțiile încorporate care se deschid și se închid automat. Ele sunt disponibile în PHP5. De asemenea, trebuie să vă familiarizați cu atributele fișierelor, adică cu proprietățile lor.
Ei pot spune:
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.
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 ().
<?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ă:
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 ().
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:
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.
Înainte de a lucra la un fișier, puteți verifica dacă acesta poate fi citit sau scris. Pentru a face acest lucru, 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:
Folosind operatorul ternar, puteți indica dacă un fișier este disponibil sau nu.
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.";
Funcția va afișa următoarele:
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.
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.
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., ar putea 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:
Funcția returnează un fișier descriptor sau flux, care este stocat în variabila $ file1. Acesta trebuie utilizat în toate comenzile ulterioare atunci când lucrați cu fișierul.
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 |
Pentru a citi dintr-un fișier deschis rând pe rând, puteți utiliza funcția fgets ().
<? 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.
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ă.
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:
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.