Php branje datoteke od konca. PHP: preberite datoteko PHP. Delo z datotekami v PHP: branje, pisanje in priporočila. Ustvarjanje in brisanje datotek

PHP

file_exists("test.txt")//Ali datoteka obstaja? filesize("test.txt");//Ugotovite velikost datoteke //Vrnjen je časovni žig: fileatime("test.txt");//Datum zadnjega dostopa do datoteke //date("d M Y" , $atime); filemtime("test.txt");//Datum spremembe datoteke //date("d M Y", $mtime); filectime("test.txt");//Datum ustvarjanja datoteke (Windows) //date("d M Y", $ctime);

Datoteke: načini delovanja

PHP

resource fopen (string filename, string mode) // vir - vrne kazalec na datoteko v primeru uspeha ali FALSE v primeru napake
Način delovanja Opis
r odprta datoteka samo za branje;
r+ odpreti datoteko za branje in pisanje;
w odpreti datoteko samo za pisanje. Če obstaja, se trenutna vsebina datoteke uniči. Trenutni položaj je nastavljen na začetek;
w+ odprite datoteko za branje in pisanje. Če obstaja, se trenutna vsebina datoteke uniči. Trenutni položaj je nastavljen na začetek;
A odprite datoteko za pisanje. Trenutni položaj je nastavljen na konec datoteke;
a+ odprite datoteko za branje in pisanje. Trenutni položaj je nastavljen na konec datoteke;
b obdelati binarno datoteko. Ta zastavica je obvezna pri delu z binarnimi datotekami v sistemu Windows.

Odpiranje in zapiranje datotek v PHP

PHP

$fi = fopen("test.html", "w+") ali die("Napaka"); //Primeri $fi = fopen("http://www.you/test.html","r"); $fi = fopen("http://ftp.you/test.html", "r"); //Zapri fclose($fi)

Branje datotek v PHP

PHP

//Branje datoteke fread(int fi, int length) $str = fread($fi, 5); // Branje prvih 5 znakov echo $str; // ker se je kazalec premaknil $str = fread($fi, 12); // Branje naslednjih 12 znakov echo $str; fgets(int fi[, int length]) // Branje vrstice iz datoteke fgetss(int fi, int dolžina [, dopusten niz]) // Branje vrstice iz datoteke in zavrženje oznak HTML // dovoljen niz - oznake, ki treba pustiti fgetc(int fi) //Prebere znak iz datoteke

Sprva se zapisovanje izvede na začetku datoteke, tako da se prepišejo obstoječi podatki, če obstajajo. Torej, če morate nekaj napisati na konec datoteke, morate nastaviti ustrezno način branja, na primer a+ .

Manipulacija s kazalcem v datotekah PHP

PHP

int fseek(int fi, int odmik [, int od koder]) //Nastavitev kazalca // int fi - kazalec na datoteko //odmik - število znakov za premikanje. //whence: //SEEK_SET - premikanje se začne od začetka datoteke; //SEEK_CUR - premik se začne s trenutnega položaja; //SEEK_END - premikanje se začne od konca datoteke. fseek($fi, -10, SEEK_END); //Preberi zadnjih 10 znakov $s = fread($fi, 10); $pos = ftell($fi); //Ugotovite trenutni položaj previjanje nazaj($f)//ponastavitev kazalca bool feof($f) //konec datoteke

Neposredno delo z datotekami (podatki) v PHP

PHP

array file(string filename) // Pridobite vsebino datoteke v obliki niza // Druga možnost za neposredno delo s podatki file_get_contents(string filename) // Branje (pridobivanje celotne datoteke v eni vrstici) // Pisanje v datoteka (sprva prepisana) file_put_contents(niz ime datoteke, mešani podatki[,int flag]); //FILE_APPEND // Zapiši na konec datoteke: file_put_contents("test.txt", "data", FILE_APPEND); //Če napišete matriko, $array = array("I", "live"); file_put_contents("test.txt",$array); //potem dobimo "Ilive"

Upravljanje datotek v php

PHP

kopija (izvor niza, cilj niza); // Kopiranje datoteke rename(str oldname, str newname); // Preimenuj datoteko unlink(string filename); // Brisanje datoteke

Nalaganje datotek na strežnik PHP

//Nastavitve PHP.ini file_uploads (on|off) // dovoli ali onemogoči nalaganje datotek upload_tmp_dir // začasna mapa za naložene datoteke. privzeto začasna mapa upload_max_filesize (privzeto = 2 Mb) // max. velikost datoteke za nalaganje post_max_size // skupna velikost poslanega obrazca (mora biti večja od upload_max_filesize) // Enostavno nalaganje

HTML

Delo z datotekami na strežniku

PHP

//Sprejmi podatke $tmp = $_FILES["userfile"]["tmp_name"]; $name = $_FILES["userfile"]["name"]; //Premakni datoteko move_uploaded_file($tmp, name); premakni_naloženo_datoteko($tmp, "naloži/".ime); // preusmeri datoteko v mapo za nalaganje // glede na trenutno datoteko // Kaj je v matriki $_FILES $_FILES["userfile"]["name"] // ime datoteke, na primer test.html $_FILES[ "userfile"][" tmp_name"] // začasno ime datoteke (pot) $_FILES["userfile"]["size"] // velikost datoteke $_FILES["userfile"]["type"] // vrsta datoteke $ _FILES["userfile"] ["error"] // 0 - ni napak, število - niz da fgets(ročaj vira [, int dolžina])

Vrne niz dolžine - 1 bajt, prebran iz deskriptorja datoteke, na katerega kaže ročaj. Branje se konča, ko število prebranih bajtov doseže dolžino - 1, ko doseže konec vrstice (ki je vključeno v vrnjeno vrednost) ali ko doseže konec datoteke (kar nastopi prej). Če dolžina ni določena, je privzeto 1 kilobajt ali 1024 bajtov.

Če pride do napake, se funkcija vrne LAŽNO .

Najpogostejše napake:

Programerji, navajeni semantike funkcij "C". fgets(), mora upoštevati razliko v tem, kako se vrne zastavica konca datoteke (EOF).

Kazalec datoteke mora biti veljaven in mora kazati na datoteko, ki so jo funkcije uspešno odprle fopen() oz fsockopen() .

Spodaj je preprost primer:


Primer 1. Branje datoteke vrstico za vrstico

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

komentar: Parameter dolžine je postal neobvezen od različice PHP 4.2.0. Če je ta parameter izpuščen, se predpostavlja, da je dolžina niza 1024. Od PHP 4.3 bo izpustitev parametra dolžine povzročila, da bo tok prebran do konca niza. Če je večina vrstic v datoteki daljših od 8 kilobajtov, je najučinkovitejša odločitev glede virov, ki jih uporablja skript, podati največjo dolžino vrstice.

komentar: Ta funkcija lahko pravilno obdeluje binarne podatke od PHP 4.3 naprej. Prejšnje različice te funkcije niso imele.

O uporabi funkcij fopen, fclose, feof, fgets, fgetss in fscanf

Naštejmo vse možnosti

Ena od prednosti dela s sodobnimi programskimi jeziki, kot je PHP, je število razpoložljivih funkcij. PHP bi zlahka sprejel Perlov moto, "Obstaja več kot en način, da nekaj naredimo," še posebej, ko gre za obdelavo datotek. Toda zaradi množice orodij, ki so na voljo, se postavlja vprašanje, katero je najboljše za opravljanje dela. Seveda je odgovor na to vprašanje resnično odvisen od vaših ciljev pri obdelavi datoteke, zato je učenje vseh zmožnosti jezika vredno vašega časa.

Tradicionalne metode fopen

Metode fopen so verjetno najbolj poznane programerjem C in C++ nekoč, saj so bolj ali manj orodja, ki so vam že leta na dosegu roke, če ste delali s temi programskimi jeziki. Za katero koli od teh metod sledite standardnemu postopku, pri čemer uporabite fopen za odpiranje datoteke, funkcijo za branje podatkov in nato fclose za zapiranje datoteke, kot je prikazano na seznamu 1.

Izpis 1. Odpiranje in branje datoteke z uporabo fgets
$file_handle = fopen("myfile", "r"); medtem ko (!feof($file_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Čeprav te funkcije pozna večina izkušenih programerjev, naj analiziram, kako delujejo. V resnici sledite tem korakom:

  1. Odprite datoteko. $file_handle shrani povezavo do same datoteke.
  2. Preverite, ali ste dosegli konec datoteke.
  3. Nadaljujte z branjem datoteke, dokler ne pridete do konca, in natisnite vsako prebrano vrstico.
  4. Zaprite datoteko.

S tem v mislih si bom ogledal vsako tukaj uporabljeno datotečno funkcijo.

funkcija fopen

Funkcija fopen vzpostavi povezavo z datoteko. Pravim "vzpostavi povezavo", ker lahko fopen poleg odpiranja datoteke odpre tudi URL:

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

Ta vrstica programa ustvari povezavo do zgornje strani in vam omogoča, da jo začnete brati kot lokalno datoteko.

Opomba: Možnost "r", uporabljena v fopen, označuje, da je datoteka odprta samo za branje. Ker pisanje v datoteko ni vključeno v obseg vprašanj, obravnavanih v tem članku, ne bom navedel vseh možnih vrednosti parametra. Vendar pa morate spremeniti "r" v "rb", če berete iz binarnih datotek za združljivost med platformami. Spodaj je primer te vrste.

funkcija feof

Ukaz feof določi, ali je branje doseglo konec datoteke, in vrne True ali False. Zanka, prikazana v, se nadaljuje do konca datoteke "myfile." Upoštevajte, da feof vrne tudi False, če berete URL in je povezava potekla, ker ni več podatkov za branje.

Funkcija fclose

Preskočimo sredino seznama 1 in pojdimo do konca; fclose deluje nasprotno od fopen: zapre povezavo do datoteke ali URL-ja. Po izvedbi te funkcije ne boste več mogli brati iz datoteke ali vtičnice.

funkcija fgets

Če se vrnemo nekaj vrstic nazaj v seznamu 1, pridemo do bistva procesa obdelave datoteke: dejanskega branja datoteke. Funkcija fgets je vaše orožje izbire za prvi primer. Zgrabi vrstico podatkov iz datoteke in jo vrne kot niz. Od tam lahko prikažete podatke ali jih kako drugače obdelate. Primer v seznamu 1 natisne celotno datoteko.

Če se odločite omejiti velikost podatkovnega dela, s katerim delate, lahko dodate argument fgets, da omejite največjo dolžino podatkovnega niza, ki je zajet. Na primer, uporabite naslednjo kodo, da omejite dolžino vrstice na 80 znakov:

$string = fgets($file_handle, 81);

Pomislite na "\0", indikator konca vrstice v C, in nastavite dolžino na en znak, ki je daljši, kot ga dejansko potrebujete. Kot lahko vidite, zgornji primer uporablja 81 znakov, medtem ko potrebujete 80 znakov. Naj vam postane navada, da dodate dodaten znak, kadar koli morate nastaviti omejitev dolžine vrstice za določeno funkcijo.

fread funkcijo

Funkcija fgets je le ena od mnogih funkcij, ki so na voljo za branje datoteke. To je ena najpogosteje uporabljenih funkcij, saj je obdelava datoteke po vrsticah v večini primerov najbolj smiselna. Pravzaprav številne druge funkcije ponujajo podobne zmogljivosti. Kakor koli že, analiza po vrsticah ni vedno tisto, kar potrebujete.

In tukaj dostopamo do fread. Funkcija fread ima nekoliko drugačen namen kot fgets: namenjena je branju iz binarnih datotek (to je datotek, ki na začetku niso sestavljene iz človeku berljivega besedila). Ker koncept "vrstic" ni pomemben za binarne datoteke (logične podatkovne strukture običajno niso razdeljene v vrstice), morate določiti število bajtov, ki jih želite prebrati.

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

Zgornji primer prebere 4096 bajtov (4 KB) podatkov. Upoštevajte, da bo fread prebral največ 8192 bajtov (8 KB), ne glede na vrednost, ki jo podate.

Ob predpostavki, da datoteka ni večja od 8 KB, bi moral spodnji delček programa prebrati celotno datoteko v eni vrstici.

$fh = fopen("myfile", "rb"); $data = fread($fh, filesize("myfile")); fclose($fh);

Če je velikost datoteke večja, boste morali uporabiti zanko, da preberete preostanek.

funkcija fscanf

Če se vrnemo k obdelavi nizov, je fscanf tudi naslednik tradicionalne funkcije knjižnice datotek C. Če je ne poznate, fscanf prebere podatkovna polja v spremenljivke iz datoteke.

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

Oblikovalni nizi, uporabljeni v tej funkciji, so opisani v številnih virih, kot je PHP.net, zato teh informacij ne bom ponavljal tukaj. Dovolj je reči, da je oblikovanje nizov zelo prilagodljivo. Prav tako je treba omeniti, da so vsa polja postavljena v spremenljivko, ki jo vrne funkcija. (V C bi bili ti posredovani kot argumenti.)

funkcija fgetss

Funkcija fgetss se razlikuje od tradicionalnih funkcij za upravljanje datotek in vam omogoča boljše razumevanje zmogljivosti PHP. Deluje kot fgets, vendar zavrže vse oznake HTML ali PHP, ki jih zazna, in pusti samo golo besedilo. Vzemimo spodnjo datoteko HTML.

Izpis 2. Primer datoteke HTML
Moj naslov

Če razumete, kaj pomeni "Cause there are ain't one for to give you no pain", potem preveč poslušate skupino America

Prepustimo ga skozi funkcijo fgetss.

Izpis 3. Uporaba fgetss
$file_handle = fopen("myfile", "r"); medtem ko (!feof($file_handle)) ( echo = fgetss($file_handle); ) fclose($file_handle);

To je tisto, kar boste dobili kot rezultat:

Moj naslov Če razumete, kaj pomeni "Cause there ain't one for to give you no pain", potem preveč poslušate skupino America

funkcija fpassthru

Ne glede na to, kako berete podatke iz datoteke, lahko preostale podatke natisnete s standardnim izhodnim kanalom s funkcijo fpassthru.

fpassthru($fh);

Ta funkcija natisne podatke, tako da vam jih ni treba dati v spremenljivko.

Nelinearna obdelava datotek: premikanje po datoteki

Seveda vam zgoraj opisane funkcije omogočajo le zaporedno branje iz datoteke. Bolj zapletene datoteke bodo morda zahtevale premikanje v različne dele datoteke na začetku ali koncu datoteke. Za to potrebujete funkcijo fseek.

fseek($fh, 0);

Zgornji primer se vrača na začetek datoteke. Če se ne želite premakniti na sam začetek datoteke – recimo en kilobajt je dovolj – preprosto napišete:

fseek($fh, 1024);

Od PHP V4.0 je na voljo tudi več drugih možnosti. Na primer, če se morate premakniti 100 bajtov naprej od svojega trenutnega položaja, lahko uporabite naslednjo kodo:

fseek($fh, 100, SEEK_CUR);

Podobno premik za 100 bajtov nazaj izvede:

fseek($fh, -100, SEEK_CUR);

Če se želite vrniti na položaj 100 bajtov pred koncem datoteke, namesto tega uporabite SEEK_END.

fseek($fh, -100, SEEK_END);

Ko je dosežen nov položaj, lahko uporabite fgets, fscanf ali drugo funkcijo za branje podatkov.

Opomba: fseek ne morete uporabiti za deskriptorje datotek, ki se sklicujejo na URL.

Zajemite celotno datoteko

Zdaj si bomo ogledali nekatere edinstvene zmožnosti obdelave datotek PHP: obdelava velikih blokov podatkov v eni ali dveh vrsticah. Na primer, kako lahko zgrabite datoteko in prikažete njeno celotno vsebino na svoji spletni strani? No, videli ste primer uporabe zanke s fgets. Kako pa lahko to olajšate? Postopek je skoraj smešno enostaven z uporabo fgetcontents, ki postavi celotno datoteko na vrstico.

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

Čeprav to ni najboljša možnost, lahko ta ukaz napišete še krajše:

echo file_get_contents("myfilename");

Ta članek se osredotoča predvsem na obdelavo lokalnih datotek, vendar je vredno omeniti, da lahko z opisanimi funkcijami zajamete, prikažete in razčlenite tudi druge spletne strani.

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

Ta ukaz je pravzaprav enak:

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

Morda gledate te primere in mislite: "To je veliko dela." Razvijalci PHP se strinjajo z vami. Tako lahko zgornji ukaz skrajšate na:

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

Funkcija readfile izpiše celotno vsebino datoteke ali spletne strani v privzeti izhodni medpomnilnik. Privzeto ta ukaz prikaže sporočilo o napaki, ko ne uspe. Če se želite izogniti temu vedenju (če ga želite), poskusite z ukazom:

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

Seveda, če morate obdelati vsebino datotek, je ena vrstica, ki jo vrne file_get_contents, verjetno preveč. Morda ga boste želeli najprej razdeliti na dele s funkcijo split().

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

Toda zakaj potrebujete vso to zapletenost, če obstaja popolnoma ustrezna funkcija, ki bo opravila delo namesto vas? Funkcija PHP file() opravi to nalogo v enem koraku: vrne matriko nizov, katere elementi so vrstice datoteke.

$matrika = datoteka ("moja datoteka");

Upoštevati je treba, da obstaja majhna razlika med zgornjima primeroma. Ukaz split odstrani nove vrstice, medtem ko ukaz file konča matrične vrstice z novimi vrsticami (tako kot fgets).

Zmožnosti PHP-ja pa daleč presegajo zgoraj opisane. Celotne datoteke .ini lahko razčlenite v slogu PHP s samo enim ukazom parse_ini_file. Ukaz parse_ini_file velja za datoteke, podobne tistim, prikazanim v seznamu 4.

Izpis 4. Primer datoteke .ini
; Ime komentarja = Naloga "King Arthur" = Iskanje svetega grala Najljubša barva = Modra Samuel Clemens = Mark Twain Caryn Johnson = Whoopi Goldberg

Naslednji ukazi predstavljajo datoteko kot matriko in nato natisnejo matriko:

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

Rezultat bo naslednji rezultat:

Izpis 5. Izhod
Niz ( => Kralj Artur => Iskanje svetega grala => Modra => Mark Twain => Whoopi Goldberg)

Seveda boste morda opazili, da je ta ukaz združil razdelke. To je privzeto dejanje, vendar ga lahko preprosto prilagodite z uporabo drugega argumenta parse_ini_file: process_sections, ki je logična spremenljivka. Nastavite process_sections na True.

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

In vaš rezultat bo videti takole:

Izpis 6. Izhod
Array ( => Array ( => King Arthur => Iskanje svetega grala => Blue) => Array ( => Mark Twain => Whoopi Goldberg))

PHP spravi podatke v večdimenzionalno matriko, ki jo je mogoče enostavno razčleniti.

Toda to je le vrh ledene gore, ko gre za obdelavo datotek v PHP. Bolj zapletene funkcije, kot sta tidy_parse_file in xml_parse, vam lahko pomagajo razčleniti dokumente HTML oziroma XML. Glejte razdelek za podrobnejše informacije o delovanju teh funkcij. Oboje je vredno razmisliti, če boste delali s temi vrstami datotek, a namesto da bi pregledali vse možne vrste datotek, si boste morda želeli podrobneje ogledati vsebino tega članka, ki vsebuje nekaj dobrih splošnih pravil za delo s funkcijami, ki sem jih do sedaj opisal.

Dober slog programiranja

Nikoli ne predvidevajte, da bo vse v vašem programu delovalo, kot je predvideno. Na primer: kaj če je bila datoteka, ki jo iščete, premaknjena? Kaj pa, če sprememba dovoljenja povzroči, da ne morete brati vsebine datoteke? Z metodama file_exists in is_readable lahko vnaprej preverite obstoj datoteke in pravice za branje.

Izpis 7. Uporaba file_exists in is_readable
$filename = "myfile"; if (file_exists($filename) && is_readable ($filename)) ( $fh = fopen($filename, "r"); # Obdelava fclose($fh); )

Vendar bo v praksi ta del programa za vašo nalogo verjetno prevelik. Ravnanje z vrednostmi, ki jih vrne fopen, je preprostejše in natančnejše.

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

Ker fopen vrne False, če ne uspe, bo to zagotovilo, da bo datoteka obdelana le, če jo je mogoče odpreti. Seveda, če datoteka ne obstaja ali je neberljiva, bi pričakovali, da bo vrnjena vrednost negativna. Zato je takšno preverjanje past, v katero se ujamejo vse morebitne težave. Druga možnost je, da zapustite program ali prikažete sporočilo o napaki, če datoteke ni mogoče odpreti.

Tako kot fopen tudi funkcije file_get_contents, file in readfile vrnejo False, če datoteke ni mogoče odpreti ali obdelati. Funkcije fgets, fgetss, fread, fscanf in fclose prav tako vrnejo False, če pride do napake. Seveda, z izjemo fclose, ste verjetno že obdelali rezultate, ki jih vrnejo. Kar zadeva fclose, ni mogoče veliko narediti, če se ročaj datoteke ne zapre pravilno, zato je preverjanje vrnjene vrednosti fclose na splošno pretirano.

Izbira je vaša

PHP nima pomanjkanja učinkovitih načinov za branje in razčlenjevanje datotek. Klasične funkcije, kot je fread, vam lahko zanesljivo služijo večino časa ali pa vas bo bolj pritegnila preprostost readfile, če je to tisto, kar potrebujete za opravljanje dela. Izbira je res odvisna od tega, kaj poskušate doseči.

Če obdelujete velike količine podatkov, se vam bo fscanf verjetno zdel bolj uporaben in učinkovit kot na primer uporaba datoteke v kombinaciji s poznejšima ukazoma split in sprintf. Če preprosto prikazujete veliko količino besedila z manjšimi spremembami, je uporaba funkcij file, file_get_contents ali readfile morda bolj smiselna. Ta rešitev bo verjetno pravilna, če uporabljate PHP za predpomnjenje ali celo ustvarjanje začasnega strežnika proxy.

PHP ponuja veliko orodij za delo z datotekami. Vsakega bolje spoznajte in ugotovite, katera orodja so najboljša za projekt, na katerem delate. Na voljo vam je širok izbor programskih orodij, uporabite jih kar najbolj učinkovito in se zabavajte ob obdelavi datotek s PHP.

V PHP se morate pogosto ukvarjati z ustvarjanjem datoteke ... je zelo preprosto: na disku ni datoteke, koda je bila zagnana in datoteka se je pojavila, nato pa lahko to datoteko preberete v drugo spremenljivko ali celo katero koli stran na Internet in potem tam nekaj napiši...za to pa moraš poznati posebne funkcije...več o tem v tem članku...

Če želite ustvariti datoteko v PHP v izvedljivem skriptu, morate samo določiti nekaj funkcij:

Oglejmo si primer:

$text = "Neka vrsta besedila za pisanje v datoteko";
$fp = fopen("datoteka.txt", "w");
fwrite($fp, $text);
fclose($fp);
?>

Tukaj bi morali vedeti:

fopen()- funkcija odpre datoteko za branje ali pisanje in pojasnila;

To pojasnilo (parameter načina funkcije fopen) je zelo pomembno:

  • "r" - odprite datoteko v php Samo za branje. Kazalec se postavi na začetek.
  • "r+" - odprite datoteko v php za branje in pisanje. Kazalec se postavi na začetek. !!! - pri teh dveh načinih r in r+ morajo biti datoteke že ustvarjene (sicer se prikaže napaka Opozorilo: fopen(file.txt) : toka ni bilo mogoče odpreti: v ... ni takšne datoteke ali imenika), mi pa samo beremo oziroma imamo možnost dodajati.
  • "w" - datoteka se odpre SAMO za pisanje. Datoteka se skrajša na ničelno dolžino - se pravi, da se prepiše. Napiše se tisto, kar je potrebno, in na začetek postavi kazalec.
  • "w+" - odpre datoteko za pisanje IN BRANJE! Ostalo je enako kot v načinu "w". !!! - v teh dveh načinih - če datoteka še ni ustvarjena - BO POSKUS USTVARJANJA!
  • "a" - datoteko odpre SAMO za pisanje. Ta možnost za razliko od "w" ne prepiše vsebine datoteke, ampak postavi kurzor na konec vrstice in na konec doda vsebino, ki smo jo želeli dodati.
  • "a+" - odpre datoteko za pisanje in branje.

fwrite($fp, $text) - funkcija za pisanje v datoteko v PHP - se pravi, kar je v spremenljivki $text, se zapiše v datoteko, ki je v spremenljivki $fp;

fclose($fp) - funkcija za zapiranje datoteke, ki smo jo zapisali v spremenljivko $fp;

Zdaj lahko enostavno pravilno ustvarite datoteke v php, jih odprete za branje in urejanje.

Uporabni PHP dodatki in funkcije za delo z odprto datoteko:

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

tukaj je pogoj izpolnjen - "naredi to, dokler ni dosežen konec datoteke" medtem ko(!feof($fp))

1. Funkcija fgets($fp, 99) - omogoča razdelitev celotne vsebine na odseke po 99 bajtov in dlje, da bi to bolj jasno videli, postavimo oznako

Ta funkcija niza fgets(ročka vira [, dolžina int]) privzeto sprejme 1024 bajtov (1 kilobajt) kot parameter dolžine, če ni navedeno, bo tako. Ta parameter je neobvezen od PHP 4.2.0 (v primeru napake vrne FALSE)

Dodatne funkcije za odpiranje, pisanje in ustvarjanje datoteke

Funkcija - notr readfile(niz ime datoteke [, bool use_include_path [, kontekst vira]]) - branje datoteke kot celote.

Prebere datoteko in zapiše vsebino v izhodni medpomnilnik. In vrne število izhodnih bajtov. V primeru napake se vrne, če pes ni uporabljen - @readfile.

Zgodilo se bo nekaj takega:

Na koncu besede je oznaka
.

b. Funkcija - niz mapa(string filename [, int use_include_path [, resource context]]), naredi enako kot funkcija readfile, z eno izjemo doda vsebino datoteke v polje:

Na ta način lahko berete poljubne strani na internetu: $lines = file("http://site/"); in iteracijo po matriki s funkcijo foreach;

3a. funkcija niza file_get_contents(ime datoteke niza [, bool use_include_path [, kontekst vira [, int offset [, int maxlen]]]] – omogoča, da dobite vsebino kot en sam niz.

To je bolj univerzalna funkcija PHP za branje datoteke, podobna funkciji datoteke, samo vsebina je vrnjena kot niz, ne kot polje, in lahko nastavite pogoje - s katerim bajtom se začne - odmik in kje končati - maxlen. V primeru napake bo vrnil FALSE.

Pomembno!!!- v tem primeru funkcija zamenja 3 naenkrat: fopen(), fread() in fclose() in se tako znebi oznake.

3b. funkcija int file_put_contents(ime datoteke niza, mešani podatki [, zastavice int [, kontekst vira]]) - enako kot zaporedni klici funkcij fopen(), fwrite() in fclose() - vrne število zapisanih bajtov.

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

file_get_contents — Prebere vsebino datoteke v niz

Opis

Vrvica file_get_contents (niz $ime datoteke [, bool $use_include_path = false [, vir $kontekst [, int $offset = -1 [, int $maxlen ]]]])

Ta funkcija je podobna funkciji mapa() z edino razliko, da file_get_contents() vrne vsebino datoteke v nizu, začenši pri podanem odmiku in do maxlen bajtov. V primeru neuspeha, file_get_contents() se bo vrnil LAŽNO.

Uporaba funkcije file_get_contents() Najbolj zaželeno je, če želite pridobiti celotno vsebino datoteke, saj funkcija uporablja tehniko preslikave datoteke v pomnilnik za izboljšanje zmogljivosti, če jo podpira vaš operacijski sistem.

Komentiraj:

Če odpirate URI, ki vsebuje posebne znake, kot je presledek, morate URI kodirati z uporabo urlencode().

Seznam parametrov

Ime datoteke, ki se bere.

Use_include_path

Komentiraj:

Od PHP 5 lahko uporabite konstanto FILE_USE_INCLUDE_PATH za iskanje datoteke v vključeni poti.

kontekstu

Veljaven kontekstni vir, ustvarjen s funkcijo stream_context_create(). Če ni potrebe po uporabi posebnega konteksta, lahko ta parameter preskočite tako, da posredujete vrednost NIČ.

Odmik, pri katerem se bo začelo branje izvirnega toka.

Iskanje po zamiku ni podprto pri delu z oddaljenimi datotekami. Poskus iskanja odmika na nelokalnih datotekah morda deluje pri majhnih odmikih, vendar je rezultat nepredvidljiv, saj se izvaja v medpomnilniškem toku.

Največja velikost prebranih podatkov. Privzeto se branje izvaja, dokler ni dosežen konec datoteke. Upoštevajte, da ta nastavitev velja tudi za tokove s filtri.

Povratne vrednosti

Funkcija vrne prebrane podatke oz LAŽNO v primeru napake.

Pozor

Ta funkcija se lahko vrne kot logična LAŽNO in nelogična vrednost, ki je pretvorjena v LAŽNO. Za več informacij glejte razdelek Boolov tip. Z operatorjem === preverite vrednost, ki jo vrne ta funkcija.

Napake

Ustvarila se bo napaka ravni E_OPOZORILO, če parametra imena datoteke ni mogoče najti, je parameter maxlength manjši od nič ali iskanje pri odmiku odmika v toku ne uspe.

Primeri

Primer #1 Pridobite in prikažite izvorno kodo domače strani spletnega mesta

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

Primer #2 Iskanje datotek v include_path

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

Primer #3 Branje dela datoteke

// Branje 14 znakov, začenši z znakom 21
$section = file_get_contents("./people.txt", NULL, NULL, 20, 14);
var_dump($odsek);
?>

Rezultat izvajanja tega primera bo nekaj takega:

niz(14) "lle Bjori Ro"

Primer #4 Uporaba pretočnih kontekstov

// Ustvari nit
$opts = array(
"http" =>matrika(
"metoda" => "GET" ,
"header" => "Accept-language: en\r\n" .
"Piškotek: foo=bar\r\n"
);

$context = stream_context_create ($opts);

// Odprite datoteko z zgoraj nastavljenimi glavami HTTP
$file = file_get_contents ("http://www.example.com/", false, $context);
?>

Close_notify. PHP bo to prijavil kot "SSL: Fatal Protocol Error" v trenutku, ko dosežete konec podatkov. Da bi se temu izognili, morate error_reporting nastaviti na raven, ki izključuje E_WARNING. PHP različice 4.3.7 in starejše lahko zaznajo, da je na strani strežnika problematičen IIS, ko odprete tok z uporabo ovoja https:// in ne prikaže opozorila. Če uporabljate fsockopen() za ustvarjanje ssl:// vtičnico, je vaša odgovornost, da zaznate in zatrete to opozorilo.