Baze podataka MySQL i Access sve više postajujavni mediji za pohranu. No, početkom 1990-ih bilo je popularno raditi s datotekama u PHP-u, spremajući zapise u formatiranim tekstualnim datotekama u CSV formatu, odvojene novim redovima.
Osnovni principi rada
Baze podataka su prikladne, ali to bi trebao svaki programerbarem imati osnovno znanje o čitanju i pisanju datoteka. Možda će mnogi razmisliti o pitanju: „Zašto to moram znati? Ako koristim datoteke, one su napisane u XML-u, a ja samo koristim parser. "
Evo nekoliko razloga zašto bi vam datoteke trebale:
- Za premještanje binarnih podataka (kao što su slikovne datoteke) u bazu podataka BLOB (Binarni veliki objekt).
- Uvoz podataka (poput adresa e-pošte) izvezenih iz stare baze podataka ili aplikacije.
- Izvoz podataka iz baze podataka u tekstualnu datoteku za izvanmrežnu obradu.
Čitanje datoteka i pisanje osnovne su operacije.Ako trebate pročitati dokument, prvo ga morate otvoriti. Nakon toga trebali biste pročitati što više sadržaja, a zatim zatvoriti datoteku. Da biste podatke zapisali u dokument, prvo ih morate otvoriti (ili, možda, stvoriti, ako još nisu stvoreni). Nakon toga napišite potrebne podatke i zatvorite ih kada završite.
Također je prikladno koristiti ugrađene funkcije koje se automatski otvaraju i zatvaraju. Dostupni su u PHP5. Također biste se trebali upoznati s atributima datoteke, odnosno njezinim svojstvima.
Oni mogu reći:
- o veličini;
- davati podatke o tome kada je zadnji put kontaktiran;
- recite o vlasniku itd.
Najbolje je naučiti sve osnovne atribute za rad s datotekama u PHP-u. To će uvelike olakšati rad.
Povijest datoteka
Možda ćete trebati znati kada je datoteka zadnji put uređena. U ovom slučaju u pomoć dolaze sljedeće funkcije: fileatime (), filemtime () i filectime ().
<?php $ formatDate = "D d M Y g: i A"; $ timeA = vrijeme datoteke ($ datoteka); $ timeM = filemtime ($ datoteka); $ timeC = vrijeme fikcije ($ datoteka); echo $ datoteka. "je pregledan". datum ($ formatDate, $ timeA). ". <br>"; echo $ datoteka. "imao posljednju promjenu i-čvora". datum ($ formatDate, $ timeM). ". <br>"; echo $ datoteka. "promijenjeno je". datum ($ formatDate, $ timeC). ".";
Evo koda dohvaća zadnju vremensku oznaku pristupa i prikazuje je:
- C: Windowsfile.ini pregledan je 19. rujna 2018. 16:34.
- C: Windowsfile.ini izmijenjen je u petak, 8. listopada 2018. 02:03.
- C: Windowsfil.ini izmijenjen je u utorak 16. prosinca 2017. 04:34.
Funkcija filectime () prikazuje vrijeme promjene različitih podataka povezanih s datotekom (na primjer, prava pristupa), a filemtime () prikazuje promjenu same datoteke.
Funkcija date () korištena je za formatiranje Unixove vremenske oznake koju vraća funkcija * time ().
Dosije ili ne?
Da biste saznali radi li PHP zapravo s datotekama, možete upotrijebiti funkciju is_file () ili funkciju is_dir () kako biste provjerili radi li se o direktoriju.
<? php echo $ datoteka. (je_datoteka ($ datoteka)? "": "nije"). "datoteka. <br>"; echo $ datoteka. (je_dir ($ datoteka)? "": "nije"). "imenik.";
Primjer izlaza koda:
- C: datoteka Windowsfile.ini.
- C: Windowsfile.ini nije direktorij.
Dakle, možete izbjeći pogreške i nepažnjom ne otvoriti "ni datoteku". U PHP-u je rad s datotekama i direktorijima sličan.
Dopuštenja za datoteke
Prije rada na datoteci možete provjeriti je li čitljiva ili zapisljiva. Da biste to učinili, morate koristiti funkcije is_writable () i is_readable ().
<? php echo $ datoteka. (je_čitljivo ($ datoteka)? "": "nije"). "pročitaj. <br>"; echo $ datoteka. (je_zapisivo ($ datoteka)? "": "nije"). "piše se.";
Te funkcije vraćaju logičku vrijednost i objašnjavaju može li se operacija izvršiti na datoteci.
Kôd će na zaslon ispisati sljedeće vrijednosti:
- C: Čita se Windowsfile.ini.
- C: Windowsfile.ini se ne piše.
Pomoću ternarnog operatora možete naznačiti je li datoteka dostupna ili ne.
veličina datoteke
Da biste saznali veličinu datoteke, upotrijebite funkciju filesize (). Prikazat će se u bajtovima.
<? php $ file = "C: Windowsfile.ini"; $ size = veličina datoteke ($ datoteka); echo $ datoteka. "ima veličinu". $ veličina. "bajt.";
Funkcija će prikazati sljedeće:
- C: Windowsfile.ini je veličine 510 bajtova.
Korištenje datoteke na Windows sustavu ovdjenaglašava jednu nijansu. Kosa crtica ima posebno značenje kao znak bijega. Morat ćete to izbjeći dodavanjem još jedne kose crte.
Ako datoteka još nije kreirana, funkcija filesize () označit će False i pogrešku. Stoga se prvo provjerava postoji li datoteka u datoteci koja postoji potrebna naredba file_exists ().
<? php $ file = "C: Windowsfile.ini"; if (datoteka_postoji ($ datoteka)) {$ size = veličina datoteke ($ datoteka); echo $ datoteka. "ima veličinu". $ veličina. "byte.";} else {eho $ datoteka. " Datoteka nije pronađena.";}
Provjera file_exists () trebala bi gotovo uvijek biti uključena zbog sigurnosti.
Čitanje datoteka
Prethodni odjeljak pokazuje koliko možeteprije čitanja ili pisanja u njih saznajte više o datotekama s kojima radite. Sada možete raščlaniti način čitanja sadržaja datoteke.
Funkcije za rad s PHP datotekama olakšavaju zadatak.U ovom slučaju trebate file_get_contents (). Čitat će cjelokupni sadržaj datoteke u varijablu bez potrebe za otvaranjem ili zatvaranjem same datoteke. To je prikladno kad je glasnoća snimanja relativno mala, jer u PHP-u nije uvijek racionalno odmah pročitati 1 GB podataka u arhivu. Rad s datotekama ".ini" i funkcija file_get_contents () prikazana je u nastavku.
<? php $ file = "c: windowsfile.ini"; $ file1 = file_get_contents ($ datoteka); echo $ file1;
Za velike datoteke ili samo ovisno opotrebe vaše skripte, možda bi bilo pametnije sami riješiti detalje. To je zato što nakon što se datoteka otvori, u njoj možete tražiti određenu bilješku i čitati onoliko podataka koliko želite. Funkcija fopen () koristi se za otvaranje datoteke.
<? php $ datoteka = "c: windowsfile.ini"; $ datoteka1 = fopen ($ datoteka, "r");
Funkcija fopen () zahtijeva dva argumenta:
- datoteka koju treba otvoriti;
- način korištenja u ovom slučaju je "r" za čitanje.
Funkcija vraća ručicu ili tok u datoteku koja je pohranjena u varijablu $ file1. Mora se koristiti u svim narednim naredbama pri radu s datotekom.
režim | vrijednost | Položaj kursora | Ako datoteka ne postoji? |
R | samo čitanje | početak datoteke | dat će pogrešku |
w | samo snimanje | početak datoteke | stvorit će novi |
i | samo snimanje | kraj datoteke | stvorit će novi |
Funkcija fgets () može se koristiti za čitanje iz otvorene datoteke jedan po jedan redak.
<? php $ datoteka = "c: windowsfile.ini"; $ datoteka1 = fopen ($ datoteka, "r"); do {echo fgets ($ file1). "<br>";} while (! feof ($ datoteka1)); fclose ($ datoteka1);
Korištenje petlje do-while je dobroizbor da unaprijed znate koliko je redaka u datoteci. Funkcija feof () provjerava je li datoteka dovršena, a petlja se nastavlja sve dok se ne postigne kraj stanja datoteke. Nakon završetka čitanja, funkcija fclose () koristi se za zatvaranje dokumenta.
Snimanje datoteke
Dva najčešće korištena načina rada prilikom pisanja u datoteku spomoću funkcije fwrite (): "w" i "a". "W" znači da trebate upisati u dokument, ali prvo će izbrisati sav sadržaj, "a" - dodajući nove podatke onome što već postoji u datoteci. Obavezno upotrijebite ispravnu opciju.
Sljedeći će primjer za snimanje koristiti način "a".
<? php $ myFile = "files.txt"; $ file1 = fopen ($ myFile, "a"); $ output = "banana". PHP_EOL; fwrite ($ datoteka1, $ izlaz); $ output = "Kina". PHP_EOL; fwrite ($ datoteka1, $ izlaz); fclose ($ datoteka1);
Prvo se naziv datoteke dodjeljuje varijabli, a zatimotvara se u načinu "a" za dodavanje. Podaci koji se zapisuju dodjeljuju se varijabli $ output i fwrite (), a podaci se dodaju datoteci. Postupak se ponavlja da bi se dodao još jedan redak, a zatim se dokument zatvara pomoću fclose ().
Unaprijed definirana konstanta PHP_EOL dodaje znak novog retka specifičan za platformu na kojoj PHP radi s tekstualnim datotekama.
Sadržaj datoteke nakon izvršavanja gornjeg koda trebao bi izgledati ovako:
- banane;
- Kina.
Funkcija file_put_contents () također moženapiši u datoteku. Potrebno je ime datoteke, podaci koji se zapisuju i konstanta FILE_APPEND ako treba dodati podatke (prepisat će zadani sadržaj datoteke).
Evo istog primjera kao gore, ali ovaj put pomoću file_put_contents ().
<? php $ myFile = "files.txt"; file_put_contents ($ myFile, "banana". PHP_EOL); file_put_contents ($ myFile, "Kina". PHP_EOL, FILE_APPEND);
S tim funkcijama morate često raditi, pa je najbolje zapamtiti ih. Uz to, jednog dana mogu olakšati neke složene zadatke u radu s PHP datotekama.