PDA

Arată versiune întreagă : Descrierea funcţiilor de prelucrare a fişierelor PHP



diamondnetwork
11.02.2009, 19:26
Funcţia fopen
Această funcţie se foloşte pentru deschiderea unui fişier în vederea citirii sau scrierii datelor din/în acesta. Funcţia are patru parametri, dintre care ultimii doi sunt opţionali. Primul parametru îl reprezintă numele fişierului care urmează a fi deschis. Fişierul poate fi şi unul aflat la distanţă. Un fişier este recunoscut de PHP a fi la distanţă dacă este accesibil printr-unul dintre protocoalele HTTP (Hyper Text Transfer Protocol), HTTPS (Secure HTTP), FTP (File Transfer Protocol) sau FTPS (Secure FTP). Fişierele standard de intrare şi ieşire pot fi accesate folosind următorii identificatori:

- php://stdin - fişierul standard de intrare pentru procesul curent creat de PHP;
- php://stdout - fişierul standard de ieşire pentru procesul curent creat de PHP;
- php://stderr - fişierul standard de erori pentru procesul curent creat de PHP;
- php://input - cu ajutorul acestui identificator se poate accesa conţinutul datelor transmise paginii prin intermediul metodei POST;
- php://output - cu ajutorul acestui identificator se pot scrie date direct în pagina web.

Fişierele php://input şi php://stdin pot fi deschise numai în scopul citirii, în timp ce fişierele php://output, php://stdout şi php://stderr pot fi deschise numai pentru scriere. Scrierea datelor în fişierul php://output are acelaşi efect ca şi utilizarea funcţiilor print şi echo.
Cel de-al doilea parametru este de tipul şir de caractere şi reprezintă modul de deschidere a fişierului care poate fi:

-"r" - deschide fişierul pentru citire şi poziţionează pointer-ul la începutul acestuia;
-"r+" - deschide fişierul pentru citire şi scriere şi poziţionează pointer-ul la începutul acestuia;
-"w" - deschide fişierul pentru scriere, poziţioneaza pointer-ul la începutul acestuia şi sterge conţinutul; dacă fişierul nu există, acesta este creat.
-"w+ " - deschide fişierul pentru citire şi scriere, poziţionează pointer-ul la începutul acestuia şi sterge conţinutul; dacă fişierul nu există, acesta este creat.
-"a" - deschide fişierul pentru scriere şi poziţionează pointer-ul la sfârşitul acestuia, însă fără a şterge conţinutul; dacă fişierul nu există, acesta este creat.
- "a+" - deschide fişierul pentru citire şi scriere şi poziţionează pointer-ul la sfârşitul acestuia, însă fără a şterge conţinutul; dacă fişierul nu există, acesta este creat.

La sfărşitul şirului care reprezintă modul de deschidere a fişierului mai poate apărea şi caracterul "b". Acesta este util atunci când se doreşte deschiderea fişierului în mod binar şi nu în mod text. Pe sistemele de operare *nix nu are nici un efect, în schimb pentru portabilitate este indicată folosirea lui. Cel de-al treilea parametru este de tip întreg şi poate avea valorile 0 sau 1 şi indică funcţiei faptul că se poate folosi (valoarea 1) sau nu (valoarea 0) lista de directoare, cu care interpretorul a fost configurat, pentru a găsi fişierul care se doreşte a fi deschis, în cazul în care numele acestuia nu include şi o cale absolută. Cel de-al patrulea parametru este de tipul resource şi este folosit în scopul optimizării unor operaţii. Funcţia fopen returnează un număr întreg care reprezintă identificatorul de acces la fişierul care tocmai a fost deschis. Acest identificator va fi transmis tuturor funcţiilor pe care le veţi utiliza pentru a accesa date din fişier. În cazul în care deschiderea fişierului nu poate avea loc din diferite motive, atunci funcţia returnează valoarea logică FALSE. pentru a citi date, vom folosi următoarea linie de cod sursa:

$f = fopen("test.txt", "r");

Dacă dorim să scriem date în fişier, atunci îl putem deschide folosind următorul cod:

$f = fopen("test.txt", "w");


Funcţia tmpfile
Această funcţie realizează crearea şi deschiderea unui fişier temporar pentru scriere şi citire. Funcţia tmpfile nu are parametri şi returnează un număr întreg care reprezintă identificatorul de acces al fişierului temporar. Fişierul temporar va fi şters în mod automat în momentul în care este închis sau când script-ul îşi încheie execuţia. Apelul acestei funcţii este identic cu cel al funcţiei fopen cu parametrii: un nume de fişier temporar (de obicei generat aleator) şi "w+b" ca mod de deschidere a fişierului.


Functia fclose
Această funcţie realizează închiderea unui fişier care a fost deschis cu ajutorul funcţiilor fopen sau tmpfile. Funcţia fclose are un singur parametru de tip întreg, care reprezintă identificatorul de acces la fişierul care se doreşte a fi închis. Funcţia returnează valoarea logică TRUE dacă închiderea fişierului a reuşit şi valoarea logica FALSE în caz contrar. Un exemplu de apel al acestei funcţii este

fclose($fd)

unde fd reprezintă identificatorul de acces la fişierul care se doreşte a fi închis.


Funcţia feof
Această funcţie verifică dacă s-a ajuns la sfârşitul fişierului sau nu. Funcţia feof are un singur parametru de tip întreg, care reprezintă identificatorul de acces la fişierul care se doreşte a fi închis. Funcţia returnează valoarea logică TRUE dacă am ajuns la sfârşitul fişierului şi valoarea logică FALSE în caz contrar.


Funcţiile fscanf
Această funcţie citeşte date dintr-un fişier text şi are doi parametri obligatorii. Primul parametru este de tip întreg şi reprezintă identificatorul de acces la fişierul din care se face citirea, iar cel de-al doilea parametru este de tipul şir de caractere şi indică funcţiei formatul intrării. Formatul acestuia din urmă este similar formatului folosit pentru funcţia fscanf prezentă în limbajul C/C++. Ceilalţi parametri reprezintă referinţele la variabilele care vor conţine rezultatul citirii. Funcţia returnează un vector cu valorile citite, deci prezenţa variabilelor nu mai este obligatorie ca în cazul limbajului C/C++. De exemplu, dacă din fişierul "c:\test.txt" dorim să citim un număr şi un şir de caractere separate printr-un spaţiu, atunci vom folosi următorul cod:

Code:

<?php
$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;
?>




Funcţia fread
Această funcţie se foloseşte pentru citirea datelor din fişiere binare. Pentru compatibilitate cu toate sistemele de operare se recomandă ca la deschiderea fişierului, pentru citire, să se adauge caracterul "b" la parametrul care reprezintă modul de deschidere a fişierului. Funcţia fread are doi parametri obligatorii. Primul parametru este de tip întreg şi reprezintă identificatorul de acces al fişierului din care se doreşte să se citească date, iar al doilea parametru, tot de tip întreg, reprezintă numarul de octeţi care se doresc a fi citiţi. Rezultatul returnat de această funcţie este de tip şir de caractere care este format din octeţii care s-au citit din fişierul de intrare. În cazul în care în fişierul din care se citesc date nu mai este disponibil numărul de octeţi specificat în cadrul celui de-al doilea parametru, atunci funcţia returnează toţi octeţii disponibili de la poziţia curentă din fişier şi până la sfârşitul acestuia. În continuare este un exemplu de folosire a acestei funcţii. Codul este compatibil cu toate sistemele de operare pe care limbajul PHP poate fi instalat.

Code:

<?php
$fis = "test.txt";
$fd = fopen($fis, "rb");
$continut = fread($fd, filesize($fis));
fclose($fd);
echo "Continutul fisierului este: ";
echo $continut;
?>



Funcţia fgetc
Această funcţie citeşte următorul caracter disponibil din fişierul de intrare. Funcţia are un singur parametru de tip întreg care reprezintă identificatorul de acces la fişierul din care se doreşte să se facă citirea. Funcţia fgetc returnează un şir de caractere, în cazul în care nu s-a ajuns la sfârşitul fişierului, format dintr-un singur caracter, şi anume, cel citit din fişier. În cazul în care ne aflăm la sfârşitul fişierului, funcţia fgetc returnează valoarea logică FALSE.

Code:

<?php
$fisier = "test.txt";
$fd = fopen($fisier,"r");
$car = fgetc($fd);
fclose($fd);
echo "Primul caracter din fisier este: ";
echo $car;
?>




Funcţia fgets
Această funcţie se foloseşte pentru a citi o linie dintr-un fişier de tip text. Sintaxa acestei funcţii este similară cu cea a funcţiei fread, cu menţiunea că cel de-al doilea parametru este opţional. Funcţia fgets returnează un şir de caractere care conţine datele citite. Citirea datelor din fişier se încheie în momentul în care s-a citit un număr de caractere egal cu valoarea celui de-al doilea parametru (în cazul în care acesta este prezent), în momentul întâlnirii unui sfârşit de linie sau în momentul în care s-a ajuns la sfârşitul fişierului. În cazul în care ne aflăm la sfârşitul fişierului, funcţia fgets returnează valoarea logică FALSE.

Code:

<?php
$fisier = "test.txt";
$fd= fopen($fisier,"r");
$linie = fgets($fd);
fclose($fd) ;
echo "Prima linie din fisier este: ";
echo $linie;
?>



În acest exemplu am omis cel de-al doilea parametru.


Funcţia fgetss
Această funcţie citeşte o linie dintr-un fişier HTML. Spre deosebire de funcţia fgets, funcţia fgetss are trei parametri. Primii doi parametri sunt identici cu cei folosiţi în cazul funcţiei fgets. Cel de-al treilea parametru este opţional, este de tip şir de caraetere şi reprezintă o listă de marcaje HTML sau PHP pe care funcţia nu trebuie să le elimine în momentul citirii. Această funcţie returnează un şir de caractere care reprezintă datele din fişierul HTML care au fost citite. Citirea datelor se încheie în momentul în care s-au citit atâtea caractere câte indică cel de-al doilea parametru sau în momentul în care am ajuns la sfârşitul fişierului.

Code:

<?php
$fis = "test.html";
$fd = fopen($fis, "r");
echo "Continutul fisierului HTML este: ";
while (!$linie = fgetss($fd, filesize($fis)))
{
echo $linie."<br>";
}
fclose($fd);
?>



În cazul în care fişierul test.html conţine multe linii cu marcaje html, prin eliminarea lor, şirul returnat devine vid, iar pe ecran se vor afişa multe rânduri goale.


Funcţia fgetcsv
Această funcţie citeşte date dintr-un fisier CSV (Comma Separated Values - valori separate prin virgula). Un fişier de tip CSV are formatul text şi conţine mai multe înregistrări. Este o reprezentare textuala a unui fişier de tip tabelar. Pe fiecare linie a unui astfel de fişier se află mai multe valori ale unor câmpuri care sunt delimitate printr-un separator. De obicei acest separator este caracterul " , " (virgula), de unde şi numele acestui tip de fişier. Funcţia fgetcsv are trei parametri dintre care primii doi sunt obligatorii. Primul parametru este de tip întreg şi reprezintă identificatorul de acces la fişierul de intrare, al doilea parametru este de tip întreg şi reprezintă numărul maxim de octeţi care se vor procesa la o citire şi trebuie să aibă o valoare mai mare decât lungimea celei rnai mari linii din fişierul CSV, iar al treilea parametru este de tip şir de caractere care trebuie să aibă lungimea 1 şi reprezintă separatorul care se va folosi la procesarea datelor. Funcţia returnează, în cazul în care nu ne aflăm la sfârşitul fişierului de intrare, un tablou de şiruri de caractere care reprezintă valorile citite. În cazul în care ne aflăm la sfârşitul fişierului, funcţia fgetcsv returnează valoarea logică FALSE. În continuare este prezentat un exemplu de utilizare a acestei funcţii pentru un fişier CSV în care fiecare linie nu are o lungime mai mare de 1000 de caractere:

Code:

<?php
$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);
?>




Funcţia file_get_contents
Această funcţie citeşte conţinutul unui fişier de tip text şi are doi parametri. Primul parametru este de tip şir de caractere şi reprezintă numele fişierului al cărui conţinut se va citi, iar cel de-al doilea parametru este opţional şi indică dacă pentru găsirea fişierului se va folosi sau nu lista de directoare predefinită. Funcţia returnează un şir de caractere care conţine toate datele din fişierul primit ca parametru în cazul în care citirea s-a efectuat cu succes şi valoarea logică FALSE în caz contrar.


Funcţia file
Această funcţie citeşte conţinutul unui fişier de tip text şi are aceeaşi sintaxă cu funcţia file_get_contens, dar rezultatul returnat de aceasta este un tablou de şiruri de caractere, fiecare dintre acestea constând într-o linie din fişierul primit ca parametru.


Funcţia filetype
Această funcţie returnează un şir de caractere care reprezintă tipul unui fişier. Funcţia filetype are un singur parametru de tip şir de caractere, mai exact numele fişierului pentru care dorim să determinăm tipul. Valorile posibile pentru tipul unui fişier sunt "pipe", "fifo", "char", "dir", "block", "link", "file", şi "unknown".


Funcţia filesize
Această funcţie se foloşeste pentru a afla dimensiunea, exprimată în octeţi, a unui fişier. Funcţia filesize are un singur parametru de tip şir de caractere, mai exact numele fişierului pentru care dorim să determinăm dimensiunea.


Funcţia fwrite
Această funcţie se foloseşte pentru a scrie date într-un fişier text sau binar. Pentru compatibilitate cu toate sistemele de operare, se recomandă ca la deschiderea fişierului, pentru scriere, să se adauge caracterul "b" la parametrul care reprezintă modul de deschidere a fişierului. Funcţia fwrite are trei parametri. Primul parametru este de tip întreg şi reprezintă identificatorul de acces la fişierul în care se doreşte să se scrie date, cel de-al doilea parametru este de tip şir de caractere şi reprezintă datele care se vor scrie în fişier, iar cel de-al treilea parametru este de tip întreg, opţional şi reprezintă numărul de octeţi din şirul de caractere care se vor scrie în fişier. Funcţia returnează un număr întreg care reprezintă numărul de octeţi pe care a reuşit să-i scrie în fişier, în cazul în care nu au apărut erori şi valoarea logică FALSE în caz contrar. În continuare este un exemplu de utilizare a acestei funcţii:

Code:

<?php
$fis = "test.txt";
$sir = "Scriere in fisier";
$fp = fopen($fis, "a");
fwrite($fp, $sir);
echo "Am scris ($sir) in fisierul ($fis).";
fclose($fp);
?>




Funcţia fputs
Această funcţie este o redenumire a funcţiei fwrite, pentru compatibilitate cu limbajul C/C++, şi are acelaşi comportament. În limbajul C/C++ functia fwrite este folosită pentru a scrie un şir de octeţi într-un fişier, spre deosebire de PHP, unde şirul de octeţi este reprezentat chiar de şirul de caractere.


Funcţia fflush
Această funcţie forţează salvarea pe disc a conţinutului zonelor tampon folosite pentru scrierea într-un fişier. Funcţia fflush primeşte un singur parametru de tip întreg, care reprezintă identificatorul de acces al fişierului pentru care se doreşte golirea zonelor tampon. Funcţia returnează valoarea logică FALSE în caz de eroare şi valoarea logică TRUE în caz contrar .


Funcţia flock
Această funcţie se foloşeste pentru a bloca sau debloca accesul la un fişier. Necesitatea utilizării funcţiei flock apare în momentul în care mai multe procese doresc să acceseze acelaşi fişier şi nu se vrea afectarea integrităţii acestuia. Funcţia are trei parametri. Primul parametru reprezintă identificatorul de acces la conţinutul fişierului, cel de-al doilea parametru reprezintă tipul operaţiei de blocare a fişierului, iar al treilea parametru este de tip referinţă la întreg şi va primi valorea logică TRUE în cazul în care funcţia flock va opri execuţia script-ului până în momentul în care va reuşi să blocheze fişierul. Pentru cel de-al doilea parametru, în limbajul PHP sunt disponibile constantele:

- LOCK_SH - se foloseşte în cazul în care fişierul se blocheaza în mod partajat pentru citirea datelor;
- LOCK_EX - se foloseşte în cazul în care fişierul se blocheaza în mod exclusiv pentru scrierea datelor;
- LOCK_UN - se foloseşte în cazul în care se doreşte deblocarea unui fişier;
- LOCK_NB - se foloseşte împreună cu una dintre primele trei constante dacă nu se doreşte ca funcţia flock să întrerupă execuţia script-ului până în momentul în care va reuşi să efectueze operaţia cerută; această constantă se adună la una dintre primele trei.

Funcţia returnează valoarea logică TRUE în caz de succes şi valoarea logică FALSE în cazul unui eşec.


Funcţia fseek
Această funcţie se foloseşte pentru modificarea poziţiei de citire sau scriere în interiorul unui fişier. Funcţia fseek are trei parametri. Primul parametru este de tip întreg şi reprezintă identificatorul de acces la un fişier, al doilea parametru este de tip întreg şi indică numărul de poziţii cu care se va face modificarea, iar al treilea parametru, tot de tip întreg, este opţional şi specifică modul în care se va face modificarea. Se observă că cel de-al doilea parametru poate avea şi valori negative. Modificarea poziţiei de citire sau scriere se poate face în trei moduri pentru care sunt definite constante:

- relativ la începutul fişierului - constanta SEEK_SET;
- relativ la pozitia curentă - constanta SEEK_CUR;
- relativ la sfârşitul fişierului - constanta SEEK_SET.

În cazul în care cel de-al treilea parametru lipseste se va folosi ca valoare pentru acesta constanta SEEK_SET. Funcţia returnează o valoare întreagă egală cu 0, în cazul în care nu au aparut erori, şi egală cu -1 în caz contrar. Această funcţie nu poate fi folosită pentru fişiere care sunt accesate folosind unul dintre protocoalele HTTP sau FTP.


Funcţia rewind
Această funcţie schimbă poziţia de citire sau scriere într-un fişier la începutul acestuia şi are un singur parametru care specifică identificatorul de acces la fişier. Rezultatul returnat de funcţia rewind este acelaşi cu cel returnat de funcţia fseek. Apelul acestei funcţii este echivalent cu apelul funcţiei fseek cu primul parametru având ca valoare identificatorul de acces al fişierului, al doilea parametru având valoarea 0 şi cel de-al treilea parametru având valoarea SEEK_SET chiar dacă lipseşte.


Funcţia ftell
Această funcţie se foloseşte pentru a afla poziţia curentă de la care se va face următoarea citire sau scriere într-un fişier, relativ la începutul acestuia. Funcţia ftell primeşte ca parametru identificatorul de acces al fişierului pentru care se aplică şi returnează o valoare întreagă reprezentând poziţia din fişier, în caz de succes sau valoarea logică FALSE în caz de eşec.


Funcţia ftruncate
Această funcţie realizează redimensionarea fişierului cu o valoare primită ca parametru. Funcţia ftruncate are doi parametri. Primul dintre aceştia este identificatorul de acces al fişierului care se redimensionează, iar al doilea parametru este de tip întreg şi reprezintă noua dimensiune a fişierului. Trebuie ţinut cont de faptul ca în cazul în care cel deal doilea parametru are o valoare mai mare decât dimensiunea curentă a fişierului, va fi alocat, pe disc, spaţiu suplimentar care nu va fi iniţializat. În cazul în care cel de-al doilea parametru are o valoare mai mica decât dimensiunea curentă a fişierului, atunci toate datele din fişier, care se află după poziţia indicată de noua valoare, se vor pierde.


Funcţia delete
Această funcţie este mai degrabă o redenumire a funcţiei unlink, care se foloseşte pentru a şterge un fişier de pe disc. Funcţia unlink primeşte ca parametru un nume de fişier şi returnează valoarea logică TRUE în cazul în care ştergerea s-a efectuat cu succes. În cazul în care ştergerea nu s-a putut efectua, funcţia returneză valoarea logică FALSE.

radiofan
11.02.2009, 19:34
Multumesc foarte Mult!! Foarte folositor!!!

ecko911
12.02.2009, 12:40
fff bun.multumesc

dorikut
14.02.2009, 16:19
Multumesc foarte Mult!! Foarte folositor!!!

fff bun.multumesc
Mesajele de acest gen postate dupa implementarea functiei "thanks" pe forum sunt considerate POSHUNT.

Multumesc pentru intelegere!