Home   FORUM   Toplista   HTML   CSS   JavaScript   PHP   DIZAJN   SEO   Mapa
KONTAKT
izuzetan[at]gmail.com






TOP LISTA SAJTOVA

Čitanje iz fajla red po red

U svrhu čitanja podataka iz fajla red po red koriste se funkcije fgets, fgetss i fgetcsv. Evo daću program koji čita celi fajl i ispisuje njegov sadržaj. Nakon toga sledi komentar:

$fp = @fopen("podaci.txt", "r");
if ($fp) {
  while (!feof($fp)) {
    $citaj = fgets($fp, 4096);
    echo $citaj . "<br>";
  }
  fclose($fp);
}

Rezultat programa biće:

1 Milan 176 70
2 Pera 185 95
3 Dejan 171 81
4 Slavko 189 105

Iskazom $fp=@fopen("podaci.txt", "r"); kao što znamo smo otvorili fajl i to samo za čitanje jer smo izabrali za drugi parametar slovo "r". Na početku smo stavili znak "@" koji ne dozvoljava pojavljivanje u brauzeru pojavljivanje programske poruke o grešci ukoliko nastane zbog nepostojanja fajla ili nemogućnosti njegovog otvaranja. Nakon toga ispitujemo da li je uspešno otvoren fajl pomoću izraza if (!$fp) . Kad se otvori fajl promenjljiva $fp postaje definisana a ako dodje do bilo kakve greške prilikom otvaranja fajla ta promenjljiva neće biti definisana. E sad recimo da nije definisana znači if će vratiti false pa je potrebno da u else delu if naredbe postavimo našu poruku o grešci i izlalak iz programa. Ali ako postavimo operator negacije " ! " onda menjamo logiku if naredbe i tad možemo na true pisati poruku o grešci odma nakon if uslova i time izbeći suvišne redove sa else. U while petlji čitamo sve podatke do kraja fajla. To nam omogućava funkcija feof tako što njome petlja while proverava da li se došlo do kraja fajla ili ne. Jedini parametar funkcije feof je pokazivač na fajl. Feof funkcija vraća true ako je pokazivač na kraju fajla. Indikator za kraj fajla je EOF kog poseduju svi fajlovi kao znak za kraj fajlova. Uopšteno while petlja vrši iteracije sve dok se ne pojavi u uslovu false. A kako feof vraća true u trnutku kad se pokazivač nadje na kraju onda moramo izmeniti logiku feof funkcije "spolja" i zato koristimo negaciju " ! ".

Funkcija fgets se koristi za čitanje fajla.

$sadrzaj = fgets($fp, 4096);

Ova funkcija čita jedan red teksta u fajlu. Ona čita sve dok ne naidje na znak za novi red, na kraj fajla ili dok ne pročita sve iz jednog reda. Svi tekst fajlovi imaju maksimalnu dužinu reda od 998 bajta. A mi smo u drugom parametru funkcije fgets i zato stavili 999, odnosno to je 998 uvećan za jedan bajt. Normalno ukoliko stavimo recimo 500 umesto 999 neće ići funkcija fgets kada čita do samog kraja reda, već će ići do 500 bajta u redu. Takodje ako želimo da nam red bude duži od standardne dužine onda pišemo na primer 5000.

Za čitanje fajla red po red može se koristiti i funkcija fgetss koja ima sledeći oblik:

fgetss($fp, $dužina [, string dozvoljeni_znaci]);

Ona se razlikuje od fgets po tome što briše sve PHP i HTML oznake iz teksta koga isčitava iz fajla. Medjutim ako želimo da ne izbaci neke PHP ili HTMAL znakove onda njih navedemo u parametru funkcije kog smo predstavili sa “dozvoljeni_znaci”. Za čitanje fajla u kome su korisnici sajta unosili podatke neophodno je koristiti funkciju fgetss, jer HTML ili PHP kod iz datoteke može da ugrozi bezbednost sajta.

Postoji još i funkcija fgetcsv koji ima sledeći oblik:

array fgetcsv (int $fp, int dužina [, string graničnik [, string navodnik]];

Ova funkcija čita redove iz fajla u formatu sa graničnikom – tabulatorskim znakom ili zarezom – koji obično koriste programi za tabelarna izračunavanja i slično. Omogućava jednostavno izdvajanje promenjljivih iz zapisa fajla bez analiziranja tekstualnih redova. Funkcija se poziva isto kao i fgets ali joj se prosledjuje graničnik za razdvajanje polja. Na primer:

$sadržaj = fgetcsv($fp, 120, "\t");

Znači, čita red iz fajla i rastavljaga čim naidje na tabulator "\t". Rezultati se vraćaju kao niz u promenjljivu $sadržaj u našem slučaju. Parametar „dužina“ bi trebao da bude broj bajtova veći od najvećeg broja bajtova koje ima jedno polje zapisa u fajlu. Parametar „navodnik“ koristite da bi ste odredili šta stoji ispred i iza svakog polja u redu. Ako ništa ne stoji podrazumevan znak je "" (običan navodnik).

Copyright © 2010 BUbaj. Powered By bubaj.com
PHP    PHP sintaksa    Fajl    Niz    String    Funkcija    Objektno programiranje    MySQL    Unos fajla    Datum    Forme    Sesija    Registracija