»  Pagina principala  »  PHP si mysql »  Descrierea functiilor de prelucrare a fisierelor

Descrierea functiilor de prelucrare a fisierelor

Limbajul PHP ofera un set de functii pentru a facilita accesul la continutul fisierelor. Sintaxa majoritatii dintre acestea este similara functiilor de manipulare a fisierelor prezente in limbajul C/C ++. Datorita faptului ca limbajul PHP este independent de platforma, printre numele functiilor se regasesc si nume cunoscute pe platformele de operare *nix si Microsoft Windows.

Functia fopen
Aceasta functie se foloste pentru deschiderea unui fisier in vederea citirii sau scrierii datelor din/in acesta. Functia are patru parametri, dintre care ultimii doi sunt optionali. Primul parametru il reprezinta numele fisierului care urmeaza a fi deschis. Fisierul poate fi si unul aflat la distanta. Un fisier este recunoscut de PHP a fi la distanta daca este accesibil printr-unul dintre protocoalele HTTP (Hyper Text Transfer Protocol), HTTPS (Secure HTTP), FTP (File Transfer Protocol) sau FTPS (Secure FTP). Fisierele standard de intrare si iesire pot fi accesate folosind urmatorii identificatori:
- php://stdin - fisierul standard de intrare pentru procesul curent creat de PHP;
- php://stdout - fisierul standard de iesire pentru procesul curent creat de PHP;
- php://stderr - fisierul standard de erori pentru procesul curent creat de PHP;
- php://input - cu ajutorul acestui identificator se poate accesa continutul datelor transmise paginii prin intermediul metodei POST;
- php://output - cu ajutorul acestui identificator se pot scrie date direct in pagina web.
Fisierele php://input si php://stdin pot fi deschise numai in scopul citirii, in timp ce fisierele php://output, php://stdout si php://stderr pot fi deschise numai pentru scriere. Scrierea datelor in fisierul php://output are acelasi efect ca si utilizarea functiilor print si echo.
Cel de-al doilea parametru este de tipul sir de caractere si reprezinta modul de deschidere a fisierului care poate fi:
-"r" - deschide fisierul pentru citire si pozitioneaza pointer-ul la inceputul acestuia;
-"r+" - deschide fisierul pentru citire si scriere si pozitioneaza pointer-ul la inceputul acestuia;
-"w" - deschide fisierul pentru scriere, pozitioneaza pointer-ul la inceputul acestuia si sterge continutul; daca fisierul nu exista, acesta este creat.
-"w+ " - deschide fisierul pentru citire si scriere, pozitioneaza pointer-ul la inceputul acestuia si sterge continutul; daca fisierul nu exista, acesta este creat.
-"a" - deschide fisierul pentru scriere si pozitioneaza pointer-ul la sfarsitul acestuia, insa fara a sterge continutul; daca fisierul nu exista, acesta este creat.
- "a+" - deschide fisierul pentru citire si scriere si pozitioneaza pointer-ul la sfarsitul acestuia, insa fara a sterge continutul; daca fisierul nu exista, acesta este creat.
La sfasitul sirului care reprezinta modul de deschidere a fisierului mai poate aparea si caracterul "b". Acesta este util atunci cand se doreste deschiderea fisierului in mod binar si nu in mod text. Pe sistemele de operare *nix nu are nici un efect, in schimb pentru portabilitate este indicata folosirea lui. Cel de-al treilea parametru este de tip intreg si poate avea valorile 0 sau 1 si indica functiei faptul ca se poate folosi (valoarea 1) sau nu (valoarea 0) lista de directoare, cu care interpretorul a fost configurat, pentru a gasi fisierul care se doreste a fi deschis, in cazul in care numele acestuia nu include si o cale absoluta. Cel de-al patrulea parametru este de tipul resource si este folosit in scopul optimizarii unor operatii. Functia fopen returneaza un numar intreg care reprezinta identificatorul de acces la fisierul care tocmai a fost deschis. Acest identificator va fi transmis tuturor functiilor pe care le veti utiliza pentru a accesa date din fisier. In cazul in care deschiderea fisierului nu poate avea loc din diferite motive, atunci functia returneaza valoarea logica FALSE. De exemplu, pentru a deschide fisierul cu numele "test.txt" pentru a citi date, vom folosi urmatoarea linie de cod sursa: $f = fopen ("test.txt", "r") ;. Daca dorim sa scriem date in fisier, atunci il putem deschide folosind urmatorul cod: $f = fopen ("test.txt", "w") ;.

Functia tmpfile
Aceasta functie realizeaza crearea si deschiderea unui fisier temporar pentru scriere si citire. Functia tmpfile nu are parametri si returneaza un numar intreg care reprezinta identificatorul de acces al fisierului temporar. Fisierul temporar va fi sters in mod automat in momentul in care este inchis sau cand script-ul isi incheie executia. Apelul acestei functii este identic cu cel al functiei
fopen cu parametrii: un nume de fisier temporar (de obicei generat aleator) si "w+b" ca mod de deschidere a fisierului.

Functia fclose
Aceasta functie realizeaza inchiderea unui fisier care a fost deschis cu ajutorul functiilor fopen sau tmpfile. Functia fclose are un singur parametru de tip intreg, care reprezinta identificatorul de acces la fisierul care se doreste a fi inchis. Functia returneaza valoarea logica TRUE daca inchiderea fisierului a reusit si valoarea logica FALSE in caz contrar. Un exemplu de apel al acestei functii este fclose ($fd), unde fd reprezinta identificatorul de acces la fisierul care se doreste a fi inchis.

Functia feof
Aceasta functie verifica daca s-a ajuns la sfarsitul fisierului sau nu. Functia feof are un singur parametru de tip intreg, care reprezinta identificatorul de acces la fisierul care se doreste a fi inchis. Functia returneaza valoarea logica TRUE daca am ajuns
la sfarsitul fisierului si valoarea logica FALSE in caz contrar.

Functiile fscanf
Aceasta functie citeste date dintr-un fisier text si are doi parametri obligatorii. Primul parametru este de tip intreg si reprezinta identificatorul de acces la fisierul din care se face citirea, iar cel de-al doilea parametru este de tipul sir de caractere si indica functiei formatul intrarii. Formatul acestuia din urma este similar formatului folosit pentru functia fscanf prezenta in limbajul C/C++. Ceilalti parametri reprezinta referintele la variabilele care vor contine rezultatul citirii. Functia returneaza un vector cu valorile citite, deci prezenta variabilelor nu mai este obligatorie ca in cazul limbajului C/C++. De exemplu, daca din fisierul "c:\test.txt" dorim sa citim un numar si un sir de caractere separate printr-un spatiu, atunci vom folosi urmatorul cod:

$f = fopen("c:\\test.txt","r") ;
$rez = fscanf ($f, "%d %s \n") ;
list ($nr, $sir) = $rez;
fclose ($f) ;
echo "Am citit numarul: ".$nr."<BR>";
echo "si sirul: ".$sir;


Functia fread
Aceasta functie se foloseste pentru citirea datelor din fisiere binare. Pentru compatibilitate cu toate sistemele de operare se recomanda ca la deschiderea fisierului, pentru citire, sa se adauge caracterul "b" la parametrul care reprezinta modul de deschidere a fisierului. Functia fread are doi parametri obligatorii. Primul parametru este de tip intreg si reprezinta identificatorul de acces al fisierului din care se doreste sa se citeasca date, iar al doilea parametru, tot de tip intreg, reprezinta numarul de octeti care se doresc a fi cititi. Rezultatul returnat de aceasta functie este de tip sir de caractere care este format din octetii care s-au citit din fisierul de intrare. In cazul in care in fisierul din care se citesc date nu mai este disponibil numarul de octeti specificat in cadrul celui de-al doilea parametru, atunci functia returneaza toti octetii disponibili de la pozitia curenta din fisier si pana la sfarsitul acestuia. In continuare va prezentam un exemplu de folosire a acestei functii, iar in figura 2 poate fi observat efectul executiei codului. Codul este compatibil cu toate sistemele de operare pe care limbajul PHP poate fi instalat.
$fis = "c:\\test.txt";
$fd = fopen ($fisr, "rb");
$continut = fread ($fd, filesize ($fis));
fclose ($fd);
echo "Continutul fisierului este: ";
echo $continut;


Functia fgetc
Aceasta functie citeste urmatorul caracter disponibil din fisierul de intrare. Functia are un singur parametru de tip intreg care reprezinta identificatorul de acces la fisierul din care se doreste sa se faca citirea. Functia fgetc returneaza un sir de caractere, in cazul in care nu s-a ajuns la sfarsitul fisierului, format dintr-un singur caracter, si anume, cel citit din fisier. In cazul in care ne aflam la sfarsitul fisierului, functia fgetc returneaza valoarea logica FALSE.
$fisier = "c:\\test.txt";
$fd = fopen ($fisier,"r") ;
$car = fgetc ($fd) ;
fclose ($fd) ;
echo "Primul caracter din fisier este: ";
echo $car;


Functia fgets
Aceasta functie se foloseste pentru a citi o linie dintr-un fisier de tip text. Sintaxa acestei functii este similara cu cea a functiei fread, cu mentiunea ca cel de-al doilea parametru este optional. Functia fgets returneaza un sir de caractere care contine datele citite. Citirea datelor din fisier se incheie in momentul in care s-a citit un numar de caractere egal cu valoarea celui de-al doilea parametru (in cazul in care acesta este prezent), in momentul intalnirii unui sfarsit de linie sau in momentul in care s-a ajuns la sfarsitul fisierului. In cazul in care ne aflam la sfarsitul fisierului, functia fgets returneaza valoarea logica FALSE.
$fisier = "c:\\test.txt";
$fd= fopen ($fisier,"r") ;
$linie = fgets ($fd) ;
fclose ($fd) ;
echo "Prima linie din fisier este: ";
echo $linie;

In acest exemplu am omis cel de-al doilea parametru.

Functia fgetss
Aceasta functie citeste o linie dintr-un fisier HTML. Spre deosebire de functia fgets, functia fgetss are trei parametri. Primii doi parametri sunt identici cu cei folositi in cazul functiei fgets. Cel de-al treilea parametru este optional, este de tip sir de caraetere si reprezinta o lista de marcaje HTML sau PHP pe care functia nu trebuie sa le elimine in momentul citirii. Aceasta functie returneaza un sir de caractere care reprezinta datele din fisierul HTML care au fost citite. Citirea datelor se incheie in momentul in care s-au citit atatea caractere cate indica cel de-al doilea parametru sau in momentul in care am ajuns la sfarsitul fisierului.
$fis = "c:\\test.html";
$fd = fopen ($fis, "r");
echo "Continutul fisierului HTML este: ";
while (!$l = fgetss ($fd, filesize ($fis))) {
echo $l."<br>";
}
fclose ($fd);

In cazul in care fisierul test.html contine multe linii cu marcaje html, prin eliminarea lor, sirul returnat devine vid, iar pe ecran se va afisa multe randuri goale.

Functia fgetcsv
Aceasta functie citeste date dintr-un fisier CSV ( Comma Separated Values - valori separate prin virgula ). Un fisier de tip CSV are formatul text si contine mai multe inregistrari. Este o reprezentare textuala a unui fisier cu tip. Pe fiecare linie a unui astfel de fisier se afla mai multe valori ale unor campuri care sunt delimitate printr-un separator. De obicei acest separator este caracterul " , " (virgula), de unde si numele acestui tip de fisier.Functia fgetcsv are trei parametri dintre care primii doi sunt obligatorii. Primul parametru este de tip intreg si reprezinta identificatorul de acces la fisierul de intrare,al doilea parametru este de tip intreg si reprezinta numarul maxim de octeti care se vor procesa la o citire si trebuie sa aiba o valoare mai mare decat lungimea celei rnai mari linii din fisierul CSV, iar al treilea parametru este de tip sir de caractere care trebuie sa aiba lungimea 1 si reprezinta separatorul care se va folosi la procesarea datelor. Functia returneaza, in cazul in care nu ne aflam la sfarsitul fisierului de intrare, un tablou de siruri de caractere care reprezinta valorile citite. In cazul in care ne aflam la sfarsitul fisierului, functia fgetcsv returneaza valoarea logica FALSE. In continuare este prezentat un exemplu de utilizare a acestei functii pentru un fisier CSV in care fiecare linie nu are o lungime mai mare de 1000 de caractere:
$lin = 1;
$fp = fopen ("test.csv", "r");
while ($date = fgetcsv ($fp, 1000, ",")) {
$num = count ($date);
echo "<p>$num campuri pe linia $lin: <br>";
$lin++;
for ($c = 0; $c < $num; $c++) {
echo $date [$c] . "<br>";
}
}
fclose ($fp);


Functia file_get_contents
Aceasta functie citeste continutul unui fisier de tip text si are doi parametri. Primul parametru este de tip sir de caractere si reprezinta numele fisierului al carui continut se va citi, iar cel de-al doilea parametru este optional si indica daca pentru gasirea fisierului se va folosi sau nu lista de directoare predefinita. Functia returneaza un sir de caractere care contine toate datele din fisierul primit ca parametru in cazul in care citirea s-a efectuat cu succes si valoarea logica FALSE in caz cotrar.

Functia file
Aceasta functie citeste continutul unui fisier de tip text si are aceeasi sintaxa cu functla file_get_contens, dar rezultatul returnat de aceasta este un tablou de siruri de caractere, fiecare dintre acestea constand intr-o linie din fisierul primit ca parametru.

Functia filetype
Aceasta functie returneaza un sir de caractere care reprezinta tipul unui fisier. Functia filetype are un singur parametru de tip sir de caractere, mai exact numele fisierului pentru care dorim sa determinam tipul. Valorile posibile pentru tipul unui fisier sunt "pipe", "fifo", "char", "dir", "block", "link", "file", si "unknown".

Functia filesize
Aceasta functie se foloseste pentru a afla dimensiunea, exprimata in octeti, a unui fisier. Functia filesize are un singur parametru de tip sir de caractere, mai exact numele fisierului pentru care dorim sa determinam dimensiunea.

Functia fwrite
Aceasta functie se foloseste pentru a scrie date intr-un fisier text sau binar. Pentru compatibilitate cu toate sistemele de operare, se recomanda ca la deschiderea fisierului, pentru scriere, sa se adauge caracterul "b" la parametrul care reprezinta modul de deschidere a fisierului. Functia fwrite are trei parametri. Primul parametru este de tip intreg si reprezinta identificatorul de acces la fisierul in care se doreste sa se scrie date, cel de-al doilea parametru este de tip sir de caractere si reprezinta datele care se vor scrie in fisier, iar cel de-al treilea parametru este de tip intreg, optional si reprezinta numarul de octeti din sirul de caractere care se vor scrie in fisier. Functia returneaza un numar intreg care reprezinta numarul de octeti pe care a reusit sa-i scrie in fisier, in cazul in care nu au aparut erori si valoarea logica FALSE in caz contrar. In continuare este un exemplu de utilizare a acestei functii:
$fis = "c:\\test.txt";
$sir = "Scriere in fisier";
$fp = fopen ($fis, "a") ;
fwrite ($fp, $sir) ;
echo "Am scris ($sir) in fisierul ($fis).";
fclose ($fp) ;


Functia fputs
Aceasta functie este o redenumire a functiei fwrite, pentru compatibilitate cu limbajul C/C++, si are acelasi comportament. In limbajul C/C++ functia fwrite este folosita pentru a scrie un sir de octeti intr-un fisier, spre deosebire de PHP, unde sirul de octeti este reprezentat chiar de sirul de caractere.

Functia fflush
Aceasta functie forteaza salvarea pe disc a continutului zonelor tampon folosite pentru scrierea intr-un fisier. Functia fflush primeste un singur parametru de tip intreg, care reprezinta identificatorul de acces al fisierului pentru care se doreste golirea zonelor tampon. Functia returneaza valoarea logica FALSE in caz de eroare si valoarea logica TRUE in caz contrar .

Functia flock
Aceasta functie se foloseste pentru a bloca sau debloca accesul la un fisier. Necesitatea utilizarii functiei flock apare in momentul in care mai multe procese doresc sa acceseze acelasi fisier si nu se vrea afectarea integritatii acestuia. Functia are trei parametri. Primul parametru reprezinta identificatorul de acces la continutul fisierului, cel de-al doilea parametru reprezinta tipul operatiei de blocare a fisierului, iar al treilea parametru este de tip referinta la intreg si va primi valorea logica TRUE in cazul in care functia flock va opri executia script-ului pana in momentul in care va reusi sa blocheze fisierul. Pentru cel de-al doilea parametru, in limbajul PHP sunt disponibile constantele:
- LOCK_SH - se foloseste in cazul in care fisierul se blocheaza in mod partajat pentru citirea datelor;
- LOCK_EX - se foloseste in cazul in care fisierul se blocheaza in mod exclusiv pentru scrierea datelor;
- LOCK_UN - se foloseste in cazul in care se doreste deblocarea unui fisier;
- LOCK_NB - se foloseste impreuna cu una dintre primele trei constante daca nu se doreste ca functia flock sa intrerupa executia script-ului pana in momentul in care va reusi sa efectueze operatia ceruta; aceasta constanta se aduna la una dintre primele trei.
Functia returneaza valoarea logica TRUE in caz de succes si valoarea logica FALSE in cazul unui esec.

Functia fseek
Aceasta functie se foloseste pentru modificarea pozitiei de citire sau scriere in interiorul unui fisier. Functia fseek are trei parametri. Primul parametru este de tip intreg si reprezinta identificatorul de acces la un fisier, al doilea parametru este de tip intreg si indica numarul de pozitii cu care se va face modificarea, iar al treilea parametru, tot de tip intreg, este optional si specifica modul in care se va face modificarea. Se observa ca cel de-al doilea parametru poate avea si valori negative. Modificarea pozitiei de citire sau scriere se poate face in trei moduri pentru care sunt definite constante:
- relativ la inceputul fisierului - constanta SEEK_SET;
- relativ la pozitia curenta - constanta SEEK_CUR;
- relativ la sfarsitul fisierului - constanta SEEK_SET.
In cazul in care cel de-al treilea parametru lipseste se va folosi ca valoare pentru acesta constanta SEEK_SET. Functia returneaza o valoare intreaga egala cu 0, in cazul in care nu au aparut erori, si egala cu -1 in caz contrar. Aceasta functie nu poate fi folosita pentru fisiere care sunt accesate folosind unul dintre protocoale!e HTTP sau FTP.

Functia rewind
Aceasta functie schimba pozitia de citire sau scriere intr-un fisier la inceputul acestuia si are un singur parametru care specifica identificatorul de acces la fisier. Rezultatul returnat de functia rewind este acelasi cu cel returnat de functia fseek. Apelul acestei functii este echivalent cu apelul functiei fseek cu primul parametru avand ca valoare identificatorul de acces al fisierului, al doilea parametru avand valoarea 0 si cel de-al treilea parametru avand valoarea SEEK_SET chiar daca lipseste.

Functia ftell
Aceasta functie se foloseste pentru a afla pozitia curenta de la care se va face urmatoarea citire sau scriere intr-un fisier, relativ la inceputul acestuia. Functia ftell primeste ca parametru identificatorul de acces al fisierului pentru care se aplica si returneaza o valoare intreaga reprezentand pozitia din fisier, in caz de succes sau valoarea logica FALSE in caz de esec.

Functia ftruncate
Aceasta functie realizeaza redimensionarea fisierului cu o valoare primita ca parametru. Functia ftruncate are doi parametri. Primul dintre acestia este identificatorul de acces al fisierului care se redimensioneaza, iar al doilea parametru este de tip intreg si reprezinta noua dimensiune a fisierului. Trebuie tinut cont de faptul ca in cazul in care cel deal doilea parametru are o valoare mai mare decat dimensiunea curenta a fisierului va fi alocat, pe disc, spatiu suplimentar care nu va fi initializat. In cazul in care cel de-al doilea parametru are o valoare mai mica decat dimensiunea curenta a fisierului, atunci toate datele din fisier, care se afla dupa pozitia indicata de noua valoare, se vor pierde.

Functia delete
Aceasta functie este mai degraba o redenumire a functiei unlink, care se foloseste pentru a sterge un fisier de pe disc. Functia delete a fost inchusa in pachetul de functii oferit de limbajul PHP pentru cei care au programat in limbaje precum Pascal si nu au avut la dispozitie functia unlink. Functia unlink primeste ca parametru un nume de fisier si returneaza valoarea logica TRUE in cazul in care stergerea s-a efectuat cu succes. In cazul in care stergerea nu s-a putut efectua, functia returneza valoarea logica FALSE.



Link-ul autorului:
www.tutoriale.far-php.ro

Comentarii




Voteaza acest articol!
 



Trimite un comentariu!

Nume *
E-mail *
Comentariu *
  Vreau sa fiu anuntat de urmatoarele mesaje la acest articol

Security image

Fanache A. Remus

www.farsoft.far-php.ro - portofoliu
http://www.farsoft.far-php.ro

Cloud tag

tutorial, photoshop, html, css, javascript, flash, php, mysql, grafica 3D, tutorial, coduri, scripturi, generator de coduri, cursuri php