PHP čitajući fajl od kraja. PHP: Pročitajte PHP fajl. Rad sa fajlovima u PHP-u: čitanje, pisanje i preporuke. Kreiranje i brisanje fajlova

PHP

file_exists("test.txt")//Da li datoteka postoji? filesize("test.txt");//Pronađite veličinu datoteke //Vraća se vremenska oznaka: fileatime("test.txt");//Datum posljednjeg pristupa datoteci //date("d M Y" , $atime); filemtime("test.txt");//Datum modifikacije datoteke //date("d M Y", $mtime); filectime("test.txt");//Datum kreiranja datoteke (Windows) //date("d M Y", $ctime);

Fajlovi: režimi rada

PHP

resurs fopen (naziv datoteke, string mod) // resurs - vraća pokazivač na datoteku u slučaju uspjeha ili FALSE u slučaju greške
Način rada Opis
r otvoreni fajl samo za čitanje;
r+ otvorite datoteku za čitanje i pisanje;
w otvorite datoteku samo za pisanje. Ako postoji, tada se trenutni sadržaj datoteke uništava. Trenutna pozicija je postavljena na početak;
w+ otvorite datoteku za čitanje i pisanje. Ako postoji, tada se trenutni sadržaj datoteke uništava. Trenutna pozicija je postavljena na početak;
A otvorite datoteku za pisanje. Trenutna pozicija je postavljena na kraj datoteke;
a+ otvorite datoteku za čitanje i pisanje. Trenutna pozicija je postavljena na kraj datoteke;
b obraditi binarnu datoteku. Ova zastavica je potrebna kada radite sa binarnim datotekama na Windows-u.

Otvaranje i zatvaranje datoteka u PHP-u

PHP

$fi = fopen("test.html", "w+") ili die("Greška"); //Primjeri $fi = fopen("http://www.you/test.html","r"); $fi = fopen("http://ftp.you/test.html", "r"); //Zatvori fclose($fi)

Čitanje datoteka u PHP-u

PHP

//Pročitaj datoteku fread(int fi, int dužina) $str = fread($fi, 5); // Čitanje prvih 5 znakova echo $str; // pošto se kursor pomerio $str = fread($fi, 12); // Čitanje sljedećih 12 znakova echo $str; fgets(int fi[, int dužina]) // Čitanje linije iz datoteke fgetss(int fi, int dužina [, string dozvoljeno]) // Čitanje reda iz datoteke i odbacivanje HTML oznaka // dozvoljeni niz - oznake koje treba ostaviti fgetc(int fi) //Čita karakter iz datoteke

U početku, Write će se dogoditi na početku datoteke, prepisivanjem postojećih podataka, ako ih ima. Stoga, ako trebate nešto napisati na kraj datoteke, morate postaviti odgovarajuće način čitanja, na primjer, a+ .

Manipulacija kursorom u PHP datotekama

PHP

int fseek(int fi, int offset [, int wherece]) //Postavljanje kursora // int fi - pokazivač na datoteku //offset - broj znakova za pomicanje. //odakle: //SEEK_SET - kretanje počinje od početka datoteke; //SEEK_CUR - kretanje počinje od trenutne pozicije; //SEEK_END - kretanje počinje od kraja datoteke. fseek($fi, -10, SEEK_END); //Pročitaj zadnjih 10 znakova $s = fread($fi, 10); $pos = ftell($fi); //Pronađi trenutnu poziciju rewind($f)//resetiraj kursor bool feof($f) //kraj datoteke

Direktan rad sa fajlovima (podacima) u PHP-u

PHP

array file(string filename) // Dobiti sadržaj datoteke u obliku niza // Još jedna opcija za direktan rad s podacima file_get_contents(string filename) // Čitanje (dobivanje cijele datoteke u jednom redu) // Pisanje u datoteka (početno prepisana) file_put_contents(string ime datoteke, miješani podaci[,int flag]); //FILE_APPEND // Upisuje se na kraj datoteke: file_put_contents("test.txt", "data", FILE_APPEND); //Ako napišete niz, $array = array("I", "live"); file_put_contents("test.txt",$array); //onda dobijamo "Ilive"

Upravljanje fajlovima u php

PHP

copy(izvor stringa, odredište stringa); // Kopiranje datoteke rename(str oldname, str newname); // Preimenuj datoteku unlink(string filename); // Brisanje datoteke

Učitavanje fajlova na PHP server

//PHP.ini postavke file_uploads (on|off) // dozvoliti ili zabraniti upload datoteke upload_tmp_dir // privremeni folder za otpremljene datoteke. po defaultu privremena mapa upload_max_filesize (zadano = 2 Mb) // max. upload file size post_max_size // ukupna veličina dostavljenog obrasca (mora biti veća od upload_max_filesize) // Jednostavno učitavanje

HTML

Rad sa fajlovima na serveru

PHP

//Prihvati podatke $tmp = $_FILES["userfile"]["tmp_name"]; $name = $_FILES["userfile"]["name"]; //Premjesti datoteku move_uploaded_file($tmp, name); move_uploaded_file($tmp, "upload/".name); // preusmjeriti datoteku u folder za otpremanje // u odnosu na trenutni fajl // Šta je u nizu $_FILES $_FILES["userfile"]["name"] // naziv datoteke, na primjer, test.html $_FILES[ "userfile"][" tmp_name"] // naziv privremene datoteke (putanja) $_FILES["userfile"]["size"] // veličina datoteke $_FILES["userfile"]["type"] // tip datoteke $ _FILES["userfile"] ["error"] // 0 - nema grešaka, broj - da niz fgets(ručnik resursa [, int dužina])

Vraća string dužine - 1 bajt pročitan iz deskriptora datoteke na koji ukazuje handle . Čitanje se završava kada broj pročitanih bajtova dostigne dužinu - 1, kada dostigne kraj reda (što je uključeno u povratnu vrijednost) ili kada dođe do kraja datoteke (što se prije dogodi). Ako dužina nije navedena, podrazumevano je 1 kilobajt ili 1024 bajta.

Ako dođe do greške, funkcija se vraća FALSE .

Najčešće greške:

Programeri navikli na semantiku "C" funkcija fgets(), mora uzeti u obzir razliku u načinu na koji se vraća oznaka kraja datoteke (EOF).

Pokazivač datoteke mora biti važeći i pokazivati ​​na datoteku koju su funkcije uspješno otvorile fopen() ili fsockopen() .

Ispod je jednostavan primjer:


Primjer 1. Čitanje datoteke red po red

$handle = fopen("/tmp/inputfile.txt" , "r");
dok (! feof ($handle)) (
$buffer = fgets($handle, 4096);
echo $buffer ;
}
fclose($handle);
?>

komentar: Parametar dužine postao je opcioni počevši od PHP verzije 4.2.0. Ako je ovaj parametar izostavljen, pretpostavlja se da je dužina stringa 1024. Od PHP 4.3, izostavljanje parametra dužine će uzrokovati čitanje toka do kraja stringa. Ako je većina redova u datoteci duža od 8 kilobajta, najefikasnija odluka u vezi sa resursima koje koristi skripta je specificiranje maksimalne dužine reda.

komentar: Ova funkcija može ispravno obraditi binarne podatke počevši od PHP 4.3. Ranije verzije nisu imale ovu funkciju.

O korištenju funkcija fopen, fclose, feof, fgets, fgetss i fscanf

Hajde da navedemo sve mogućnosti

Jedna od prednosti rada sa modernim programskim jezicima kao što je PHP je broj dostupnih funkcija. PHP bi lako mogao usvojiti Perlov moto, "Postoji više od jednog načina da se nešto uradi", posebno kada je u pitanju obrada datoteka. Ali s mnoštvom dostupnih alata, postavlja se pitanje koji je najbolji za obavljanje posla. Naravno, odgovor na ovo pitanje zaista ovisi o tome koji su vaši ciljevi prilikom obrade datoteke, tako da je učenje svih mogućnosti jezika vrijedno vašeg vremena.

Tradicionalne fopen metode

Fopen metode su možda najpoznatije C i C++ programerima iz prošlosti, jer su manje-više alati koji su vam godinama na dohvat ruke ako ste radili sa tim programskim jezicima. Za bilo koju od ovih metoda, slijedite standardnu ​​proceduru, koristeći fopen da otvorite datoteku, funkciju za čitanje podataka, a zatim fclose da zatvorite datoteku, kao što je prikazano u Listingu 1.

Listing 1. Otvaranje i čitanje datoteke koristeći fgets
$file_handle = fopen("myfile", "r"); while (!feof($file_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Iako su ove funkcije poznate većini iskusnih programera, dopustite mi da analiziram kako rade. U stvarnosti slijedite ove korake:

  1. Otvorite fajl. $file_handle pohranjuje vezu do samog fajla.
  2. Provjerite jeste li stigli do kraja datoteke.
  3. Nastavite čitati datoteku dok ne dođete do kraja, ispisujući svaki red koji pročitate.
  4. Zatvorite fajl.

Imajući to na umu, pogledat ću svaku funkciju datoteke koja se ovdje koristi.

fopen funkcija

Funkcija fopen uspostavlja vezu sa datotekom. Kažem "uspostavlja vezu" jer, osim otvaranja datoteke, fopen može otvoriti i URL:

$fh = fopen("http://127.0.0.1/", "r");

Ova linija programa stvara vezu do gornje stranice i omogućava vam da je počnete čitati kao lokalnu datoteku.

Bilješka: Opcija "r" koja se koristi u fopen označava da je datoteka otvorena samo za čitanje. Budući da pisanje u datoteku nije uključeno u opseg pitanja o kojima se raspravlja u ovom članku, neću navoditi sve moguće vrijednosti parametra. Međutim, trebate promijeniti "r" u "rb" ako čitate iz binarnih datoteka radi kompatibilnosti na više platformi. Ispod je primjer ove vrste.

feof funkcija

Naredba feof određuje da li je čitanje stiglo do kraja datoteke i vraća True ili False. Petlja prikazana u nastavlja se do kraja datoteke "myfile". Imajte na umu da feof također vraća False ako čitate URL i veza istekne jer nema više podataka za čitanje.

Funkcija fclose

Preskočimo sredinu Listinga 1 i idemo do kraja; fclose radi suprotno od fopen: zatvara vezu sa datotekom ili URL-om. Nakon izvršavanja ove funkcije, više nećete moći čitati iz datoteke ili utičnice.

fgets funkcija

Vraćajući se nekoliko redova unazad u Listingu 1, dolazite do srži procesa obrade datoteke: zapravo čitanje datoteke. Funkcija fgets je vaše oružje izbora za prvi primjer. On hvata red podataka iz datoteke i vraća ga kao string. Odatle možete prikazati podatke ili ih na drugi način obraditi. Primjer u Listingu 1 ispisuje cijelu datoteku.

Ako odlučite ograničiti veličinu dijela podataka s kojim radite, možete dodati argument fgets da ograničite maksimalnu dužinu niza podataka koji se snima. Na primjer, koristite sljedeći kod da ograničite dužinu reda na 80 znakova:

$string = fgets($file_handle, 81);

Zamislite "\0", indikator kraja reda u C, i postavite dužinu na jedan znak dužu nego što vam je zapravo potrebno. Kao što vidite, gornji primjer koristi 81, dok vam je potrebno 80 znakova. Neka vam postane navika dodavanje dodatnog znaka kad god trebate postaviti ograničenje dužine reda za datu funkciju.

fread funkcija

Funkcija fgets je samo jedna od mnogih funkcija dostupnih za čitanje datoteke. Ovo je jedna od najčešće korištenih funkcija, budući da obrada datoteke red po red u većini slučajeva ima najviše smisla. U stvari, nekoliko drugih funkcija nudi slične mogućnosti. Kako god bilo, analiza linija po red nije uvijek ono što vam treba.

I ovdje pristupamo fread-u. Funkcija fread ima malo drugačiju svrhu od fgets: ona je namijenjena čitanju iz binarnih datoteka (to jest, datoteka koje se u početku ne sastoje od teksta čitljivog ljudima). Pošto koncept "linija" nije relevantan za binarne datoteke (logičke strukture podataka se obično ne razbijaju u redove), morate navesti broj bajtova za čitanje.

$fh = fopen("myfile", "rb"); $data = fread($file_handle, 4096);

Gornji primjer čita 4096 bajtova (4 KB) podataka. Imajte na umu da će, bez obzira na vrijednost koju navedete, fread čitati maksimalno 8192 bajta (8 KB).

Pod pretpostavkom da datoteka nije veća od 8 KB, programski isječak u nastavku bi trebao pročitati cijelu datoteku u jednom redu.

$fh = fopen("myfile", "rb"); $data = fread($fh, veličina datoteke("myfile")); fclose($fh);

Ako je veličina datoteke veća, morat ćete koristiti petlju da pročitate ostatak.

fscanf funkcija

Vraćajući se na obradu stringova, fscanf je također nasljednik tradicionalne funkcije biblioteke datoteka C. Ako niste upoznati s njom, fscanf čita polja podataka u varijable iz datoteke.

lista ($field1, $field2, $field3) = fscanf($fh, "%s %s %s");

Nizovi formata koji se koriste u ovoj funkciji opisani su u mnogim izvorima kao što je PHP.net, tako da neću ponavljati ovu informaciju ovdje. Dovoljno je reći da je formatiranje stringova vrlo fleksibilno. Također treba napomenuti da su sva polja smještena u varijablu koju vraća funkcija. (U C-u bi se oni prosljeđivali kao argumenti.)

fgetss funkcija

Funkcija fgetss se razlikuje od tradicionalnih funkcija za manipulaciju datotekama i daje vam bolje razumijevanje PHP-ovih mogućnosti. Radi kao fgets, ali odbacuje sve HTML ili PHP oznake koje otkrije, ostavljajući samo goli tekst. Uzmimo HTML fajl ispod.

Listing 2. Primjer HTML datoteke
Moj naslov

Ako razumete šta znači "Cause there ain't no one for to you no pain" onda slušate previše o bendu America

Propustimo ga kroz fgetss funkciju.

Listing 3. Upotreba fgetss-a
$file_handle = fopen("myfile", "r"); while (!feof($file_handle)) ( echo = fgetss($file_handle); ) fclose($file_handle);

Ovo ćete dobiti kao izlaz:

Moj naslov Ako razumete šta znači "Cause there ain't no one for to you no pain" onda slušate previše o bendu America

fpassthru funkcija

Bez obzira na to kako čitate podatke iz datoteke, preostale podatke možete ispisati koristeći standardni izlazni kanal koristeći fpassthru funkciju.

fpassthru($fh);

Ova funkcija ispisuje podatke tako da ih ne morate stavljati u varijablu.

Nelinearna obrada datoteke: kretanje kroz datoteku

Naravno, gore opisane funkcije dozvoljavaju samo uzastopno čitanje iz datoteke. Složenije datoteke mogu zahtijevati premještanje u različite dijelove datoteke na početku ili na kraju datoteke. Da biste to učinili, potrebna vam je funkcija fseek.

fseek($fh, 0);

Gornji primjer se vraća na početak datoteke. Ako ne želite da pređete na sam početak fajla - recimo, dovoljan je jedan kilobajt - jednostavno napišite:

fseek($fh, 1024);

Od PHP V4.0, dostupno je i nekoliko drugih opcija. Na primjer, ako trebate pomaknuti naprijed 100 bajtova od svoje trenutne pozicije, možete koristiti sljedeći kod:

fseek($fh, 100, SEEK_CUR);

Isto tako, pomeranje unazad 100 bajtova se vrši:

fseek($fh, -100, SEEK_CUR);

Ako se želite vratiti na poziciju od 100 bajtova prije kraja datoteke, umjesto toga koristite SEEK_END.

fseek($fh, -100, SEEK_END);

Kada se dostigne nova pozicija, možete koristiti fgets, fscanf ili neku drugu funkciju za čitanje podataka.

Bilješka: ne možete koristiti fseek na deskriptorima datoteka koji upućuju na URL.

Snimite cijeli fajl

Sada prelazimo na neke od jedinstvenih PHP-ovih mogućnosti obrade datoteka: obradu velikih blokova podataka u jednom ili dva reda. Na primjer, kako možete uzeti datoteku i prikazati cijeli njen sadržaj na svojoj web stranici? Pa, vidjeli ste primjer korištenja petlje sa fgetovima. Ali kako to možete učiniti lakšim? Proces je gotovo smiješno jednostavan koristeći fgetcontents, koji stavlja cijeli fajl na liniju.

$my_file = file_get_contents("myfilename"); echo $my_file;

Iako ovo nije najbolja opcija, ovu naredbu možete napisati još kraće:

echo file_get_contents("myfilename");

Ovaj članak se prvenstveno fokusira na obradu lokalnih datoteka, međutim, vrijedno je napomenuti da također možete snimiti, prikazati i raščlaniti druge web stranice koristeći opisane funkcije.

echo file_get_contents("http://127.0.0.1/");

Ova komanda je zapravo ista kao:

$fh = fopen("http://127.0.0.1/", "r"); fpassthru($fh);

Možda gledate ove primjere i mislite: "To je puno posla." PHP programeri se slažu s vama. Dakle, gornju naredbu možete skratiti na:

readfile("http://127.0.0.1/");

Funkcija readfile ispisuje cijeli sadržaj datoteke ili web stranice u zadani izlazni bafer. Ova komanda podrazumevano prikazuje poruku o grešci kada ne uspe. Da biste izbjegli ovo ponašanje (ako ga želite), pokušajte naredbu:

@readfile("http://127.0.0.1/");

Naravno, ako trebate obraditi sadržaj datoteka, onda je jedan red koji vraća file_get_contents vjerovatno previše. Možda biste željeli da ga prvo podijelite na dijelove pomoću funkcije split().

$array = split("\n", file_get_contents("myfile"));

Ali zašto vam je potrebna sva ova složenost ako postoji savršeno prikladna funkcija koja će obaviti posao umjesto vas? PHP file() funkcija izvršava ovaj zadatak u jednom koraku: vraća niz stringova čiji su elementi linije datoteke.

$array = file("myfile");

Treba napomenuti da postoji mala razlika između dva gornja primjera. Komanda split uklanja nove redove, dok naredba file završava redove niza novim redovima (kao i fgets).

PHP-ove mogućnosti, međutim, daleko prevazilaze gore opisane. Možete raščlaniti cijele .ini datoteke u PHP stilu sa samo jednom parse_ini_file komandom. Naredba parse_ini_file primjenjuje se na datoteke slične onima prikazanim u Listingu 4.

Listing 4. Primjer .ini datoteke
; Ime komentara = Potraga za "Kralj Artur" = Potraga za svetim gralom omiljena boja = Plava Samuel Clemens = Mark Twain Caryn Johnson = Whoopi Goldberg

Sljedeće naredbe predstavljaju datoteku kao niz, a zatim ispisuju niz:

$file_array = parse_ini_file("holy_grail.ini"); print_r $file_array;

Rezultat će biti sljedeći izlaz:

Listing 5. Izlaz
Niz ( => Kralj Artur => Tražiti Sveti gral => Plavi => Mark Twain => Whoopi Goldberg)

Naravno, možete primijetiti da je ova komanda spojila sekcije. Ovo je zadana radnja, ali je možete lako prilagoditi korištenjem drugog argumenta parse_ini_file: process_sections, koji je Boolean varijabla. Postavite process_sections na True.

$file_array = parse_ini_file("holy_grail.ini", istina); print_r $file_array;

I vaš izlaz će izgledati ovako:

Listing 6. Izlaz
Niz ( => Niz ( => Kralj Artur => Za traženje Svetog grala => Plavo) => Niz ( => Mark Twain => Whoopi Goldberg))

PHP stavlja podatke u višedimenzionalni niz koji se lako može analizirati.

Ali ovo je samo vrh ledenog brega kada je u pitanju obrada datoteka u PHP-u. Složenije funkcije kao što su tidy_parse_file i xml_parse mogu vam pomoći da analizirate HTML i XML dokumente. Pogledajte odjeljak za detaljnije informacije o tome kako ove funkcije rade. I jedno i drugo je vrijedno razmotriti ako ćete raditi s ovim tipovima datoteka, ali umjesto da prolazite kroz sve moguće tipove datoteka, možda biste željeli detaljnije pogledati sadržaj ovog članka, koji ima neka dobra opća pravila za rad sa funkcijama koje sam do sada opisao.

Dobar stil programiranja

Nikada nemojte pretpostavljati da će sve u vašem programu raditi kako je predviđeno. Na primjer: šta ako je datoteka koju tražite premještena? Što ako promjena dozvole uzrokuje da ne možete čitati sadržaj datoteke? Možete unaprijed provjeriti postojanje datoteke i prava za čitanje pomoću metoda file_exists i is_readable.

Listing 7. Korištenje file_exists i is_readable
$filename = "myfile"; if (file_exists($filename) && is_readable ($filename)) ( $fh = fopen($filename, "r"); # Obrada fclose($fh); )

Međutim, u praksi će ovaj dio programa vjerovatno biti pretjeran za vaš zadatak. Rukovanje vrijednostima koje vraća fopen je jednostavnije i preciznije.

if ($fh = fopen($filename, "r")) ( # Obrada fclose($fh); )

Budući da fopen vraća False ako ne uspije, to će osigurati da će datoteka biti obrađena samo ako se datoteka može otvoriti. Naravno, ako datoteka ne postoji ili je nečitljiva, očekivali biste da će povratna vrijednost biti negativna. Stoga je takva provjera zamka u koju padaju svi potencijalni problemi. Alternativno, možete izaći iz programa ili prikazati poruku o grešci ako se datoteka ne može otvoriti.

Kao i fopen, funkcije file_get_contents, file i readfile vraćaju False ako se datoteka ne može otvoriti ili obraditi. Funkcije fgets, fgetss, fread, fscanf i fclose također vraćaju False ako dođe do greške. Naravno, sa izuzetkom fclose , vjerovatno ste već obrađivali rezultate koje oni vraćaju. Što se tiče fclose, nema mnogo toga što se može učiniti ako se file handle ne zatvori kako treba, tako da je provjera povratne vrijednosti fclose općenito pretjerana.

Izbor je na vama

PHP nema nedostatak efikasnih načina za čitanje i raščlanjivanje datoteka. Klasične funkcije poput fread-a mogu vam pouzdano služiti većinu vremena, ili će vas možda više privući jednostavnost readfile-a ako je to ono što vam je potrebno da biste obavili posao. Izbor zaista zavisi od toga šta pokušavate da postignete.

Ako obrađujete velike količine podataka, vjerovatno će vam fscanf biti korisniji i efikasniji od, recimo, korištenja datoteke u kombinaciji sa sljedećim komandama split i sprintf. Međutim, ako jednostavno prikazujete veliku količinu teksta sa manjim promjenama, korištenje funkcija file, file_get_contents ili readfile može imati više smisla. Ovo rješenje će vjerovatno biti ispravno kada koristite PHP za keširanje ili čak kreiranje privremenog proxy servera.

PHP pruža mnoge alate za rad sa fajlovima. Upoznajte svaki od njih bolje i saznajte koji su alati najbolji za projekat na kojem radite. Nudi vam se širok izbor softverskih alata, koristite ih najefikasnije i zabavite se obrađujući svoje datoteke koristeći PHP.

U PHP-u se često morate baviti kreiranjem datoteke... vrlo je jednostavno: nema datoteke na disku, kod je pokrenut i datoteka se pojavila, onda možete pročitati ovu datoteku u drugu varijablu ili čak bilo koju stranicu na Internet i onda tamo nešto napiši...ali za ovo treba znati posebne funkcije...više o tome u ovom članku...

Da biste kreirali datoteku u PHP-u u izvršnoj skripti, trebate samo navesti nekoliko funkcija:

Pogledajmo primjer:

$text = "Neka vrsta teksta za pisanje u fajl";
$fp = fopen("file.txt", "w");
fwrite($fp, $text);
fclose($fp);
?>

Ovdje bi trebao znati:

fopen()- funkcija otvara datoteku za čitanje ili pisanje i pojašnjenja;

Ovo pojašnjenje (parametar načina rada fopen funkcije) je vrlo važno:

  • "r" - otvorite datoteku u php Samo za čitanje. Kursor se postavlja na početak.
  • "r+" - otvorite datoteku u php za čitanje i pisanje. Kursor se postavlja na početak. !!! - sa ova dva načina rada r i r+, fajlovi moraju već biti kreirani (inače će se pojaviti greška Upozorenje: fopen(file.txt) : nije uspjelo otvoriti stream: nema takve datoteke ili direktorija u...), a mi samo čitamo ili imamo priliku dodati.
  • "w" - fajl se otvara SAMO za pisanje. Fajl se skraćuje na nultu dužinu - odnosno prepisuje se. Zapisuje se ono što je potrebno i kursor se postavlja na početak.
  • "w+" - otvara fajl za pisanje I ČITANJE! Ostalo je isto kao u "w" modu. !!! - u ova dva moda - ako fajl nije kreiran - POKUŠAJ SE DA SE PRAVI!
  • "a" - otvorite datoteku SAMO za pisanje. Za razliku od "w", ova opcija ne prepisuje sadržaj datoteke, već postavlja kursor na kraj reda i dodaje sadržaj koji smo željeli dodati na kraj.
  • "a+" - otvorite datoteku za pisanje i čitanje.

fwrite($fp, $text) - funkcija za pisanje u datoteku u PHP-u - to jest, ono što je u promenljivoj $text upisuje se u datoteku koja je u promenljivoj $fp;

fclose($fp) - funkcija za zatvaranje datoteke koju smo zapisali u varijablu $fp;

Sada možete lako kreirati datoteke u php-u ispravno, otvoriti ih za čitanje i uređivanje.

Korisni PHP dodaci i funkcije za rad sa otvorenim fajlom:

while(!feof($fp))(
$mytext = fgets($fp, 99);
echo $mytext."
";
}

ovdje je ispunjen uslov - "dok se ne dostigne kraj fajla, uradi ovo" dok(!feof($fp))

1. Funkcija fgets($fp, 99) - omogućava vam da podijelite sav sadržaj na sekcije od 99 bajtova i dalje, da biste to jasnije vidjeli postavljamo oznaku

Ova funkcija niza fgets(ručnik resursa [, int dužina]) podrazumevano prihvata 1024 bajta (1 kilobajt) kao parametar dužine, ako nije navedeno biće tako. Ovaj parametar je opcioni od PHP 4.2.0 (vraća FALSE u slučaju greške)

Dodatne funkcije za otvaranje, pisanje i kreiranje datoteke

Funkcija - int readfile(string filename [, bool use_include_path [, kontekst resursa]]) - pročitajte datoteku u cjelini.

Čita datoteku i upisuje sadržaj u izlazni bafer. I vraća broj izlaznih bajtova. U slučaju greške, vratit će se ako se pas ne koristi - @readfile.

Nešto poput ovoga će se dogoditi:

Na kraju riječi nalazi se oznaka
.

b. Funkcija - niz fajl(string filename [, int use_include_path [, kontekst resursa]]), radi isto što i funkcija readfile, s jednim izuzetkom dodaje sadržaj datoteke u niz:

Na ovaj način možete čitati bilo koju stranicu na Internetu: $lines = file("http://site/"); i iterirati niz pomoću funkcije foreach;

3a. string funkcija file_get_contents(string filename [, bool use_include_path [, kontekst resursa [, int offset [, int maxlen]]]] - omogućava vam da dobijete sadržaj kao jedan niz.

Ovo je univerzalnija PHP funkcija za čitanje datoteke, slična funkciji datoteke, samo se sadržaj vraća kao niz, a ne niz, i možete postaviti uslove - s kojim bajtom početi - offset i gde da završim - maxlen. U slučaju neuspjeha, vratit će FALSE.

Bitan!!!- u ovom slučaju, funkcija zamjenjuje 3 odjednom: fopen(), fread() i fclose() i tako se oslobađa oznake.

3b. int funkcija file_put_contents(string ime datoteke, mješoviti podaci [, int zastavice [, kontekst resursa]]) - identično sekvencijalnim pozivima funkcija fopen(), fwrite() i fclose() - vraća broj upisanih bajtova.

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents — Čita sadržaj datoteke u niz

Opis

String file_get_contents (string $filename [, bool $use_include_path = netačno [, resurs $context [, int $offset = -1 [, int $maxlen ]]]])

Ova funkcija je slična funkciji fajl() sa jedinom razlikom u tome file_get_contents() vraća sadržaj datoteke u nizu, počevši od navedenog pomaka do maxlen bajtova. U slučaju neuspjeha, file_get_contents()Će se vratiti FALSE.

Korištenje funkcije file_get_contents() Najpoželjnije je ako trebate dobiti cijeli sadržaj datoteke, budući da funkcija koristi tehniku ​​mapiranja datoteke u memoriju za poboljšanje performansi, ako to podržava vaš operativni sistem.

Komentar:

Ako otvarate URI koji sadrži posebne znakove kao što je razmak, morate kodirati URI koristeći urlencode().

Lista parametara

Ime datoteke koja se čita.

Use_include_path

Komentar:

Od PHP 5 možete koristiti konstantu FILE_USE_INCLUDE_PATH za traženje datoteke u uključenoj putanji.

kontekstu

Važeći resurs konteksta kreiran pomoću funkcije stream_context_create(). Ako nema potrebe za korištenjem posebnog konteksta, možete preskočiti ovaj parametar prosljeđivanjem vrijednosti NULL.

Pomak na kojem će početi čitanje originalnog toka.

Offset pretraga nije podržana kada radite sa udaljenim datotekama. Pokušaj pronalaženja pomaka na ne-lokalnim datotekama može funkcionirati za male pomake, ali rezultat je nepredvidiv jer se izvodi na baferiranom toku.

Maksimalna veličina pročitanih podataka. Podrazumevano, čitanje se obavlja sve dok se ne dostigne kraj datoteke. Imajte na umu da se ova postavka primjenjuje i na tokove sa filterima.

Povratne vrijednosti

Funkcija vraća pročitane podatke ili FALSE u slučaju greške.

Pažnja

Ova funkcija se može vratiti kao boolean FALSE, i ne-boolean vrijednost na koju se prebacuje FALSE. Za više informacija pogledajte odjeljak Boolean tip. Koristite === operator da provjerite vrijednost koju vraća ova funkcija.

Greške

Generirat će se greška nivoa E_UPOZORENJE, ako se parametar naziva datoteke ne može pronaći, parametar maxlength je manji od nule ili pretraživanje pomaka pomaka u toku ne uspijeva.

Primjeri

Primjer #1 Dobijte i prikažite izvorni kod početne stranice web stranice

$homepage = file_get_contents("http://www.example.com/");
echo $homepage ;
?>

Primjer #2 Pronalaženje datoteka u include_path

// <= PHP 5
$file = file_get_contents("./people.txt" , istina);
// > PHP 5
$file = file_get_contents("./people.txt" , FILE_USE_INCLUDE_PATH );
?>

Primjer #3 Čitanje dijela datoteke

// Čitanje 14 znakova, počevši od znaka 21
$section = file_get_contents("./people.txt" , NULL , NULL , 20 , 14 );
var_dump($sekcija);
?>

Rezultat pokretanja ovog primjera bit će otprilike ovako:

string(14) "lle Bjori Ro"

Primjer #4 Korištenje konteksta strujanja

// Kreiraj nit
$opts = niz(
"http" =>niz(
"method" => "GET" ,
"header" => "Prihvati-jezik: en\r\n" .
"Kolačić: foo=bar\r\n"
);

$context = stream_context_create ($opts);

// Otvorite datoteku koristeći gore postavljena HTTP zaglavlja
$file = file_get_contents ("http://www.example.com/" , false , $context );
?>

Close_notify. PHP će to prijaviti kao "SSL: Fatalna greška protokola" u trenutku kada dođete do kraja podataka. Da biste ovo zaobišli, trebali biste postaviti error_reporting na nivo koji isključuje E_WARNING. PHP verzije 4.3.7 i starije mogu otkriti da postoji problematičan IIS na strani servera prilikom otvaranja streama pomoću omotača https:// i ne prikazuje upozorenje. Ako koristite fsockopen() za stvaranje ssl:// socket, vaša je odgovornost da otkrijete i potisnete ovo upozorenje.