bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online Pe HaiSaRadem.ro vei gasi bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online. Nu ne crede pe cuvant, intra pe HaiSaRadem.ro ca sa te convingi.
 
-Drumul tau catre inernet-  
line decor
  HOME  -Tema lectia 8-
line decor
   
 
8.Functii de prelucare a fisierelor

Lectia 8: Functii de prelucrare a fisierelor

resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]])
Deschide un fisier sau un URL
Primul parametru este numele fisierului, iar al doilea este modul de deschidere.
use_include_path poate fi setat '1' sau TRUE daca se face cautarea si in include_path.
Exemple:

 

<?php  	$handle = fopen("fis.txt","r"); 
$handle = fopen("include/date.dat","w");
$handle = fopen("../agenda.txt","w+r");
$handle = fopen("fisier.txt","a");
$handle = fopen ("ftp://user:password@example.com/somefile.txt", "w"); ?>


Modurile de deschidere ale unui fisier sunt:

mod Descriere
'r' Deschide doar pentru citire; pozitioneaza pointerul la inceputul fisierului.
'r+' deschide pentru citire si pentru scriere;pozitioneaza pointerul la inceputul fisierului
'w' Deschide doar pentru scriere; pozitioneaza pointerul la inceputul fisierului si trunchiaza lungimea fisierului la 0.Daca fisierul nu exista incearca sa-l creeze.
'w+' Deschide pentru scriere si pentru citire; pozitioneaza pointerul la inceputul fisierului si trunchiaza lungimea fisierului la 0.Daca fisierul nu exista incearca sa-l creeze.
'a' Deschide doar pentru scriere; pozitioneaza pointerul la sfarsitul fisierului .Daca fisierul nu exista incearca sa-l creeze
'a+' Deschide pentru scriere si pentru citire;pozitioneaza pointerul la sfarsitul fisierului .Daca fisierul nu exista incearca sa-l creeze

string fread ( resource handle, int length)
Citeste pana la lenght bytes de la pointerul pozitionat in fisierul referit de handle sau pana la sfarsitul de fisier.

Exemple:
 

<?php
    $filename = "fisier.txt";
    $handle = fopen ($filename, "r") or
    die("Eroare la deschidere");
    $contents = fread ($handle, 1024);
    fclose ($handle);
?>


int fwrite ( resource handle, string string [, int length])
Scrie sirul de caractere string in fisierul referit de handle. Daca parametrul length
exista scrierea se va intrerupe dupa ca au fost scrise length caractere sau s-a ajuns la sfarsitul sirului de caractere.
Functia returneaza numarul de bytes scrisi sau FALSE daca apare o eroare.

Exemple:

<?php
   //scrie o linie noua in fisierul ex2.txt
   $filename = 'ex2.txt';
   $text = "O linie singura linie\n";
   $handle = fopen($filename, "w") or
   die("Eroare la deschidere");
   fwrite($handle, $text);
   fclose($handle);
   print "Success, am scris $text in fisierul $filename";
?>


fwrite($handle,"text");
fwrite($handle,"1234");
fwrite($handle,"a,b,c\nAm invatat php");

bool feof ( resource handle)
Returneza TRUE pointerul este pozitionat in fisier la EOF(sfarsit de fisier) sau daca apare o eroare; altfel returneaza FALSE

string fgets ( resource handle [, int length])
Returneaza un sir de caractere de lungime maxima length - 1 bytes
cititi din fisierul referit de handle. Citirea se termina cand au fost cititi length - 1 bytes ,
la intalnirea unui sfarsit de linie (care este inclus in valoarea returnata), sau la EOF.
Daca nu este specificata lungimea, lungimea default este de 1k, sau 1024 bytes.

Exemple:

<?
//afiseaza prima linie dintr-un fisier
$nume_fisier="exemplu.txt";
$handle=fopen($nume_fisier,"r") or
die("Eroare la deschidere");
$linie=fgets($handle,4096);
fclose($handle);
echo $linie;
?>

int fputs ( resource handle, string str [, int length])
fputs() este un alias pentru fwrite(), si este identic din toate punctele de vedere

Exemple:

<?php
//scrie o linie noua la sfarsitul fisierului ex2.txt
$filename = 'ex2.txt';
$text = "O linie noua \n";
$handle = fopen($filename, "a") or
die("Eroare la deschidere");
fputs($handle, $text);
fclose($handle);
print "Success, am scris $text in fisierul $filename";
?>

string fgetc ( resource handle)

Returneaza un string care contine un singur caracter citit din fisierul
referit de handle. Returneaza FALSE cand intalneste sfarsitul de fisier (EOF).

Exemple:
 

<?php
  $nume_fisier="fisier.txt";
  $handle=fopen($nume_fisier,"r") or
  die("Eroare la deschidere");
  $n=0;
  while(!feof($handle))
  {
   $c=fgetc($handle);
   echo $c;
  }
  fclose($handle);
?>

int fprintf ( resource handle, string format [, mixed args])


Scrie un string formatat conform string-ului de formatare in fisierul referit de handle
Stringul de formatare este compus din una sau mai multe directive:
caractere normale (fara de %) care sunt copiate direct la rezultat ,
si specificatii de conversie, care descriu modul de conversie a celorlalti parametri..

Un specificator de conversie poate contine in principal::


% - un caracter procent.
b - argumentul este tratat ca un integer, si prezentat ca un numar binar.
c - argumentul este tratat ca un integer, si prezentat ca, caracterul cu acel cod ASCII.
d - argumentul este tratat ca un integer, si prezentat ca un numar zecimal cu semn.
u - argumentul este tratat ca un integer, si prezentat ca un numar zecimal fara semn.
f - argumentul este tratat ca un numar real, si prezentat ca un numar real.
o - argumentul este tratat ca un integer, si prezentat ca un numar in baza 8.
s - targumentul este tratat ca un sir de caractere, si prezentat ca un sir de caractere.
x - argumentul este tratat ca un integer, si prezentat ca un numar in baza 16 (cu litere mici).
X -argumentul este tratat ca un integer, si prezentat ca un numar in baza 16 (cu litere mari).

Exemple:

$a=65;
$b="un text";
$y="f";
$z=12.33;
fprinf($handle,"%d",$a); //Imi scrie in fisierul referit de $handle numarul intreg 65;
fprinf($handle,"%b",$a); //Imi scrie in fisierul referit de $handle numarul 65 in baza 2 adica 1000001
fprinf($handle,"%x",$a); //Imi scrie in fisierul referit de $handle numarul 65 in baza 16 adica 41
fprinf($handle,"%c",$a); //Imi scrie in fisierul referit de $handle caracterul care are codul ascii 65 adica A
fprinf($handle,"%o",$a); //Imi scrie in fisierul referit de $handle numarul 65 in baza 8 adica 101
fprinf($handle,"%f",$z); //Imi scrie in fisierul referit de $handle numarul real 12.330000
fprinf($handle,"%.2f",$z); //Imi scrie in fisierul referit de $handle numarul real 12.33 doar cu doua zecimale dupa virgula.
fprinf($handle,"%s",$z); //Imi scrie in fisierul referit de $handle textul 12.33.
fprinf($handle,"%s",$b); //Imi scrie in fisierul referit de $handle textul un text.
fprinf($handle,"variabila a are valoarea %d, variabila b are valoarea %s",$a,$b);
//Imi scrie in fisierul referit de $handle: variabila a are valoarea 65, variabila b are valoarea un text

mixed fscanf ( resource handle, string format [, string var1])

Functia fscanf() este similara cu sscanf(), doar ca citeste dintr-un fisier
referit de handle si interpreteaza stringul citit conform stringului de formatare
specificat .Daca se trimit doar doi parametrii functiei aceasta va returna rezultatul sub forma unui vector.

Exemple:
 

<?php
$handle = fopen ("fisier.txt","r") or
die("Eroare la deschidere");
while ($info = fscanf ($handle, "%s\t%s\n"))
{
echo $info[0] . "<br>";
}
fclose($handle);
?>

pentru fisier.txt:

Ion Popescu
George Octavian
Vasile Ionescu

imi va afisa:

Ion
George
Vasile

int fseek ( resource handle, int offset [, int whence])

Modifica pozitiionarea in fisierul referit de handle. Noua pozitie ,masurata in bytes de la inceputul
fisierului, este obtinut adaugand un numar de bytes la pozitia specificata de whence, ale carui valori
sunt specificate mai jos:

SEEK_SET - Seteaza pozitia egala cu numarul de bytes specificati de offset..
SEEK_CUR - Seteaza pozitia egala cu pozitia curenta plus offset.
SEEK_END - Seteaza pozitia egala cu pozitia sfarsitului de fisier plus offset ( Pentru a ne muta la o pozitie inainte de sfarsitul de fisier trebuie ca offset sa aiba o valoare negativa..)
Daca whence nu este specificat, se presupune ca este SEEK_SET.
Daca mutarea s-a realizat cu succes functia returnneaza 0; altfel, returneaza -1. .

Exemple:
 

<?php
  $handle = fopen ("exemplu.txt", "r");
  fseek($handle,2);
  fscanf($handle,"%c",$char); echo $char;
?>

Daca fisierul exemplu.txt contine:

abcdefsds
sdadad

exemplul va afisa:

c

Alte exemple:

Ex1:
 

<?php
//suma numerelor intregi dintr-un fisier, numerele fiind scrise cate unul pe o linie
$nume_fisier="ex1.txt";
$handle = fopen ($nume_fisier, "r") or
   die("Eroare la deschidere");
$s=0;
while (!feof($handle))
{
$buffer = fgets($handle, 4096);
$s+=(int)$buffer;
}
echo $s;
fclose ($handle);
?>

Ex2:
 

<?
 //afiseaza numarul de aparitii ale unui caracter intr-un fisier
 $nume_fisier="ex2.txt";
 $l='a';
 $handle=fopen($nume_fisier,"r") or
   die("Eroare la deschidere");
 $n=0;
 while(!feof($handle))
 {
  $c=fgetc($handle);
  if($c==$l) $n ++;
 }
 fclose($handle);
 echo "Litera ($l) apare de $n ori in fisierul ($nume_fisier)"
?>

Ex3:

<?
 //afiseaza numarul de aparitii al unui cuvant intr-un fisier
 $nume_fisier="ex3.txt";
 $cuvant='cuvant';
 $handle=fopen($nume_fisier,"r") or
    die("Eroare la deschidere");
 $n=0;
 while(!feof($handle))
 {
   $linie=fgets($handle,4096);
   $n += substr_count($linie, $cuvant); ;
 }
 fclose($handle);
 echo "Cuvantul $cuvant apare de $n ori in fisierul $nume_fisier";
?>

Ex4:
 

<?
 //Copiaza continutul primului fisier in cel de-al doilea.
 $fisier1 = "origine.txt";
 $fisier2 = "destinatie.txt";
 $handle1 = fopen($fisier1, "r") or
  die("Eroare la deschidere");
 $handle2 = fopen($fisier2, "w") or
  die("Eroare la deschidere");
 while (!feof($handle1))
 {
  $buffer=fread($handle1,1024);
  fwrite($handle2,$buffer,1024);
 }
 fclose($handle1);
 fclose($handle2);
 echo "Am scris continutul fisierului $fisier1 in fisierul $fisier2";
 ?>