Php čítajúci súbor od konca. PHP: Prečítajte si súbor PHP. Práca so súbormi v PHP: čítanie, zápis a odporúčania. Vytváranie a odstraňovanie súborov

PHP

file_exists("test.txt")//Existuje súbor? filesize("test.txt");//Zistite veľkosť súboru //Vráti sa časová pečiatka: fileatime("test.txt");//Dátum posledného prístupu k súboru //date("d M Y" , $atime); filemtime("test.txt");//Dátum úpravy súboru //dátum("d M Y", $mtime); filectime("test.txt");//Dátum vytvorenia súboru (Windows) //dátum("d M Y", $ctime);

Súbory: prevádzkové režimy

PHP

source fopen (reťazec názov súboru, režim reťazca) // zdroj - v prípade úspechu vráti ukazovateľ na súbor alebo v prípade chyby FALSE
Prevádzkový režim Popis
r otvoriť súbor len na čítanie;
r+ otvorte súbor na čítanie a zápis;
w otvorte súbor iba na zápis. Ak existuje, aktuálny obsah súboru sa zničí. Aktuálna pozícia je nastavená na začiatok;
w+ otvorte súbor na čítanie a zápis. Ak existuje, aktuálny obsah súboru sa zničí. Aktuálna pozícia je nastavená na začiatok;
A otvorte súbor na zápis. Aktuálna pozícia je nastavená na koniec súboru;
a+ otvorte súbor na čítanie a zápis. Aktuálna pozícia je nastavená na koniec súboru;
b spracovať binárny súbor. Tento príznak sa vyžaduje pri práci s binárnymi súbormi v systéme Windows.

Otváranie a zatváranie súborov v PHP

PHP

$fi = fopen("test.html", "w+") alebo die("Chyba"); //Príklady $fi = fopen("http://www.you/test.html","r"); $fi = fopen("http://ftp.you/test.html", "r"); //Zavrieť fclose($fi)

Čítanie súborov v PHP

PHP

//Prečítajte súbor fread(int fi, dĺžka int) $str = fread($fi, 5); // Prečítajte si prvých 5 znakov echo $str; // odkedy sa kurzor posunul $str = fread($fi, 12); // Prečítajte si nasledujúcich 12 znakov echo $str; fgets(int fi[, dĺžka int]) // Čítanie riadku zo súboru fgetss(int fi, dĺžka int [, povolený reťazec]) // Čítanie riadku zo súboru a zahodenie značiek HTML // povolený reťazec - značky, ktoré treba nechať fgetc(int fi) //Prečíta znak zo súboru

Spočiatku sa zápis uskutoční na začiatku súboru prepísaním existujúcich údajov, ak nejaké existujú. Preto, ak potrebujete niečo zapísať na koniec súboru, musíte nastaviť príslušné režim čítania, napríklad a+ .

Manipulácia s kurzorom v súboroch PHP

PHP

int fseek(int fi, int offset [, int odkiaľ]) //Nastavenie kurzora // int fi - ukazovateľ na súbor //offset - počet znakov na presun. //odkiaľ: //SEEK_SET - pohyb začína od začiatku súboru; //SEEK_CUR - pohyb začína od aktuálnej pozície; //SEEK_END - pohyb začína od konca súboru. fseek($fi, -10, SEEK_END); //Prečítajte posledných 10 znakov $s = fread($fi, 10); $pos = ftell($fi); //Zistiť aktuálnu pozíciu pretáčania ($f)//resetovanie kurzora bool feof($f) //koniec súboru

Priama práca so súbormi (údajmi) v PHP

PHP

array file(string filename) // Získať obsah súboru vo forme poľa // Ďalšia možnosť priamej práce s údajmi file_get_contents(string filename) // Čítanie (získanie celého súboru v jednom riadku) // Zápis do súbor (pôvodne prepísaný) file_put_contents (reťazec názov súboru, zmiešané údaje[, príznak int]); //FILE_APPEND // Zápis na koniec súboru: file_put_contents("test.txt", "data", FILE_APPEND); //Ak napíšete pole, $array = array("I", "live"); file_put_contents("test.txt",$pole); //potom dostaneme "Živý"

Správa súborov v php

PHP

copy(zdroj reťazca, cieľ reťazca); // Kopírovanie súboru rename(str oldname, str newname); // Premenovanie súboru unlink(string filename); // Odstránenie súboru

Nahrávanie súborov na server PHP

//Nastavenia PHP.ini file_uploads (on|off) // povolenie alebo zakázanie nahrávania súboru upload_tmp_dir // dočasný priečinok pre nahrávané súbory. predvolene dočasný priečinok upload_max_filesize (predvolená hodnota = 2 Mb) // max. veľkosť nahrávaného súboru post_max_size // celková veľkosť odoslaného formulára (musí byť väčšia ako upload_max_filesize) // Jednoduché nahrávanie

HTML

Práca so súbormi na serveri

PHP

//Prijať dáta $tmp = $_FILES["userfile"]["tmp_name"]; $name = $_FILES["userfile"]["name"]; //Presun súboru move_uploaded_file($tmp, meno); move_uploaded_file($tmp, "upload/".name); // presmerovanie súboru do priečinka na nahrávanie // relatívne k aktuálnemu súboru // Čo je v poli $_FILES $_FILES["userfile"]["name"] // názov súboru, napríklad test.html $_FILES[ "userfile"][" tmp_name"] // názov dočasného súboru (cesta) $_FILES["userfile"]["size"] // veľkosť súboru $_FILES["userfile"]["type"] // typ súboru $ _FILES["userfile"] ["error"] // 0 - žiadne chyby, číslo - áno reťazec fgets(rukoväť zdroja [, dĺžka int])

Vráti reťazec dĺžky - 1 bajt načítaný z deskriptora súboru, na ktorý ukazuje handle. Čítanie končí, keď počet prečítaných bajtov dosiahne dĺžku - 1, keď dosiahne koniec riadku (ktorý je zahrnutý vo návratovej hodnote), alebo keď dosiahne koniec súboru (podľa toho, čo nastane skôr). Ak dĺžka nie je špecifikovaná, predvolená hodnota je 1 kilobajt alebo 1024 bajtov.

Ak sa vyskytne chyba, funkcia sa vráti FALSE .

Najčastejšie chyby:

Programátori zvyknutí na sémantiku „C“ funkcií fgets(), musí brať do úvahy rozdiel v tom, ako sa vracia príznak konca súboru (EOF).

Ukazovateľ súboru musí byť platný a musí ukazovať na súbor úspešne otvorený funkciami fopen() alebo fsockopen() .

Nižšie je uvedený jednoduchý príklad:


Príklad 1. Čítanie súboru riadok po riadku

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

komentár: Parameter dĺžky sa stal voliteľným počnúc verziou PHP 4.2.0. Ak je tento parameter vynechaný, predpokladá sa, že dĺžka reťazca je 1024. Od PHP 4.3 vynechanie parametra dĺžky spôsobí, že sa prúd načíta až do konca reťazca. Ak je väčšina riadkov v súbore dlhšia ako 8 kilobajtov, najúčinnejším rozhodnutím týkajúcim sa zdrojov používaných skriptom je zadať maximálnu dĺžku riadku.

komentár: Táto funkcia dokáže správne spracovať binárne dáta počnúc PHP 4.3. Predchádzajúce verzie túto funkciu nemali.

O používaní funkcií fopen, fclose, feof, fgets, fgetss a fscanf

Uveďme si všetky možnosti

Jednou z výhod práce s modernými programovacími jazykmi, ako je PHP, je množstvo dostupných funkcií. PHP by si pokojne mohlo osvojiť motto Perlu „Existuje viac ako jeden spôsob, ako niečo urobiť“, najmä pokiaľ ide o spracovanie súborov. Ale s množstvom dostupných nástrojov vyvstáva otázka, ktorý z nich je najlepší na vykonanie úlohy. Samozrejme, odpoveď na túto otázku skutočne závisí od toho, aké sú vaše ciele pri spracovaní súboru, takže osvojenie si všetkých možností jazyka stojí za váš čas.

Tradičné fopen metódy

Metódy fopen sú pravdepodobne najznámejším programátorom v C a C++, pretože sú to viac-menej nástroje, ktoré máte na dosah ruky už roky, ak ste s týmito programovacími jazykmi pracovali. Pre ktorúkoľvek z týchto metód postupujte podľa štandardného postupu, pričom na otvorenie súboru použijete fopen, funkciu na čítanie údajov a potom fclose na zatvorenie súboru, ako je uvedené vo Výpise 1.

Výpis 1. Otvorenie a čítanie súboru pomocou fgets
$file_handle = fopen("myfile", "r"); while (!feof($súbor_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Hoci tieto funkcie pozná väčšina skúsených programátorov, dovoľte mi analyzovať, ako fungujú. V skutočnosti postupujete podľa týchto krokov:

  1. Otvorte súbor. $file_handle ukladá odkaz na samotný súbor.
  2. Skontrolujte, či ste dosiahli koniec súboru.
  3. Pokračujte v čítaní súboru, kým sa nedostanete na koniec, pričom vytlačte každý prečítaný riadok.
  4. Zatvorte súbor.

S ohľadom na to sa pozriem na každú tu použitú funkciu súboru.

funkcia fopen

Funkcia fopen vytvorí spojenie so súborom. Hovorím „nadviaže spojenie“, pretože okrem otvorenia súboru môže fopen otvoriť aj adresu URL:

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

Tento riadok programu vytvorí odkaz na vyššie uvedenú stránku a umožní vám ju začať čítať ako lokálny súbor.

Poznámka: Voľba "r" použitá vo fopen označuje, že súbor je otvorený len na čítanie. Keďže zápis do súboru nie je zahrnutý v rozsahu problémov diskutovaných v tomto článku, nebudem uvádzať všetky možné hodnoty parametra. Ak však čítate z binárnych súborov kvôli kompatibilite medzi platformami, musíte zmeniť „r“ na „rb“. Nižšie je uvedený príklad tohto typu.

funkcia feof

Príkaz feof určuje, či čítanie dosiahlo koniec súboru a vráti hodnotu True alebo False. Cyklus zobrazený v pokračuje až do konca súboru "myfile." Všimnite si, že feof tiež vráti hodnotu False, ak čítate adresu URL a časový limit pripojenia vyprší, pretože už nie sú k dispozícii žiadne ďalšie údaje na čítanie.

Funkcia fclose

Preskočme stred Výpisu 1 a prejdime na koniec; fclose robí opak fopen: zatvorí spojenie so súborom alebo URL. Po vykonaní tejto funkcie už nebudete môcť čítať zo súboru alebo soketu.

funkcia fgets

Ak sa vrátite o niekoľko riadkov vo Výpise 1, dostanete sa k jadru procesu spracovania súboru: vlastne k čítaniu súboru. Funkcia fgets je vašou zbraňou v prvom príklade. Zo súboru vezme riadok údajov a vráti ho ako reťazec. Odtiaľ môžete údaje zobraziť alebo inak spracovať. Príklad vo výpise 1 vytlačí celý súbor.

Ak sa rozhodnete obmedziť veľkosť dátového bloku, s ktorým pracujete, môžete pridať argument fgets na obmedzenie maximálnej dĺžky zachyteného dátového reťazca. Napríklad na obmedzenie dĺžky riadku na 80 znakov použite nasledujúci kód:

$string = fgets($súbor_handle, 81);

Myslite na "\0", indikátor konca riadku v C, a nastavte dĺžku na jeden znak dlhší, ako skutočne potrebujete. Ako vidíte, vyššie uvedený príklad používa 81, zatiaľ čo potrebujete 80 znakov. Zvyknite si pridať ďalší znak vždy, keď potrebujete nastaviť limit dĺžky riadku pre danú funkciu.

funkcia fread

Funkcia fgets je len jednou z mnohých funkcií dostupných na čítanie súboru. Toto je jedna z najčastejšie používaných funkcií, pretože spracovanie súboru po riadkoch vo väčšine prípadov dáva najväčší zmysel. V skutočnosti niekoľko ďalších funkcií ponúka podobné možnosti. Nech je to akokoľvek, analýza riadkov po riadkoch nie je vždy to, čo potrebujete.

A tu sa dostávame k fredu. Funkcia fread má trochu iný účel ako fgets: je určená na čítanie z binárnych súborov (t. j. súborov, ktoré pôvodne nepozostávajú z ľudsky čitateľného textu). Keďže koncept "riadkov" nie je relevantný pre binárne súbory (logické dátové štruktúry nie sú zvyčajne rozdelené do riadkov), musíte zadať počet bajtov, ktoré sa majú prečítať.

$fh = fopen("myfile", "rb"); $data = fread($súbor_handle, 4096);

Vyššie uvedený príklad číta 4096 bajtov (4 KB) údajov. Všimnite si, že bez ohľadu na zadanú hodnotu, fread prečíta maximálne 8192 bajtov (8 KB).

Za predpokladu, že súbor nie je väčší ako 8 KB, úryvok programu nižšie by mal prečítať celý súbor v jednom riadku.

$fh = fopen("myfile", "rb"); $data = fread($fh, veľkosť súboru("myfile")); fclose($fh);

Ak je veľkosť súboru väčšia, na prečítanie zvyšku budete musieť použiť slučku.

funkcia fscanf

Vráťme sa k spracovaniu reťazcov, fscanf je tiež nástupcom tradičnej funkcie knižnice súborov C. Ak s ňou nie ste oboznámení, fscanf načíta dátové polia do premenných zo súboru.

zoznam ($pole1, $pole2, $pole3) = fscanf($fh, "%s %s %s");

Formátovacie reťazce použité v tejto funkcii sú popísané v mnohých zdrojoch, ako napríklad PHP.net, takže tieto informácie tu nebudem opakovať. Stačí povedať, že formátovanie reťazcov je veľmi flexibilné. Treba tiež spomenúť, že všetky polia sú umiestnené v premennej vrátenej funkciou. (V C by sa tieto odovzdali ako argumenty.)

funkcia fgetss

Funkcia fgetss sa líši od tradičných funkcií na manipuláciu so súbormi a poskytuje vám lepšie pochopenie schopností PHP. Funguje ako fgets, ale zahodí všetky tagy HTML alebo PHP, ktoré zistí, a ponechá len holý text. Zoberme si súbor HTML nižšie.

Výpis 2. Príklad HTML súboru
Môj titul

Ak pochopíte, čo znamená „Pretože tu nie je nikto, kto by vám nedal bolesť“, potom počúvate príliš veľa z kapely America

Prejdime to cez funkciu fgetss.

Výpis 3. Použitie fgetss
$file_handle = fopen("myfile", "r"); while (!feof($súbor_handle)) ( echo = fgetss($súbor_handle); ) fclose($súbor_handle);

Toto dostanete ako výstup:

Môj názov Ak rozumiete, čo znamená „Pretože tu nie je nikto, kto by vám nedal bolesť“, potom počúvate príliš veľa z kapely America

funkcia fpassthru

Bez ohľadu na to, ako načítate údaje zo súboru, môžete zvyšné údaje vytlačiť pomocou štandardného výstupného kanála pomocou funkcie fpassthru.

fpassthru($fh);

Táto funkcia vytlačí údaje, takže ich nemusíte vkladať do premennej.

Nelineárne spracovanie súborov: pohyb v súbore

Vyššie opísané funkcie vám samozrejme umožňujú čítať zo súboru iba postupne. Zložitejšie súbory môžu vyžadovať presun do rôznych častí súboru na začiatku alebo na konci súboru. Na to potrebujete funkciu fseek.

fseek($fh, 0);

Vyššie uvedený príklad sa vracia na začiatok súboru. Ak sa nechcete presunúť na úplný začiatok súboru – povedzme, stačí jeden kilobajt – jednoducho napíšete:

fseek($fh, 1024);

Od PHP V4.0 je k dispozícii aj niekoľko ďalších možností. Ak sa napríklad potrebujete posunúť dopredu o 100 bajtov z vašej aktuálnej pozície, môžete použiť nasledujúci kód:

fseek($fh, 100, SEEK_CUR);

Podobne, posun späť o 100 bajtov sa vykonáva takto:

fseek($fh, -100, SEEK_CUR);

Ak sa chcete vrátiť na pozíciu 100 bajtov pred koncom súboru, použite namiesto toho SEEK_END.

fseek($fh, -100, SEEK_END);

Po dosiahnutí novej pozície môžete na čítanie údajov použiť fgets, fscanf alebo inú funkciu.

Poznámka: nemôžete použiť fseek na deskriptoroch súborov odkazujúcich na URL.

Zachyťte celý súbor

Teraz sa pozrieme na niektoré jedinečné možnosti spracovania súborov PHP: spracovanie veľkých blokov údajov v jednom alebo dvoch riadkoch. Ako môžete napríklad uchopiť súbor a zobraziť celý jeho obsah na svojej webovej stránke? No, videli ste príklad použitia slučky s fgets. Ale ako si to môžete uľahčiť? Tento proces je takmer smiešne jednoduchý pomocou fgetcontents, ktorý umiestni celý súbor na riadok.

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

Aj keď to nie je najlepšia možnosť, tento príkaz môžete napísať ešte kratšie:

echo file_get_contents("myfilename");

Tento článok sa primárne zameriava na spracovanie lokálnych súborov, avšak stojí za zmienku, že pomocou opísaných funkcií môžete zachytávať, zobrazovať a analyzovať aj iné webové stránky.

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

Tento príkaz je v skutočnosti rovnaký ako:

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

Možno sa pozeráte na tieto príklady a hovoríte si: "To je veľa práce." Vývojári PHP s vami súhlasia. Vyššie uvedený príkaz teda môžete skrátiť na:

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

Funkcia readfile odošle celý obsah súboru alebo webovej stránky do predvolenej výstupnej vyrovnávacej pamäte. V predvolenom nastavení tento príkaz zobrazí chybové hlásenie, keď zlyhá. Ak sa chcete tomuto správaniu vyhnúť (ak ho chcete), skúste príkaz:

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

Samozrejme, ak potrebujete spracovať obsah súborov, potom jeden riadok vrátený file_get_contents je pravdepodobne príliš veľa. Možno ho budete chcieť najskôr rozdeliť na časti pomocou funkcie split().

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

Ale prečo potrebujete všetku túto zložitosť, ak existuje dokonale vhodná funkcia, ktorá túto prácu urobí za vás? Funkcia PHP file() vykoná túto úlohu v jednom kroku: vráti pole reťazcov, ktorých prvky sú riadky súboru.

$array = file("myfile");

Je potrebné poznamenať, že medzi dvoma vyššie uvedenými príkladmi je malý rozdiel. Príkaz split odstráni nové riadky, zatiaľ čo príkaz file ukončí riadky poľa novými riadkami (rovnako ako fgets).

Schopnosti PHP však ďaleko presahujú možnosti opísané vyššie. Môžete analyzovať celé súbory .ini v štýle PHP pomocou jediného príkazu parse_ini_file. Príkaz parse_ini_file sa vzťahuje na súbory podobné tým, ktoré sú uvedené vo výpise 4.

Výpis 4. Príklad súboru .ini
; Názov komentára = Úloha „Kráľ Artuš“ = Hľadanie svätého grálu obľúbená farba = Modrá Samuel Clemens = Mark Twain Caryn Johnson = Whoopi Goldberg

Nasledujúce príkazy predstavujú súbor ako pole a potom pole vytlačia:

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

Výsledkom bude nasledujúci výstup:

Výpis 5. Výstup
Array ( => Kráľ Artuš => Hľadať Svätý grál => Modrá => Mark Twain => Whoopi Goldberg)

Samozrejme, môžete si všimnúť, že tento príkaz zlúčil sekcie. Toto je predvolená akcia, ale môžete ju ľahko prispôsobiť pomocou druhého argumentu parse_ini_file: process_sections, čo je booleovská premenná. Nastavte process_sections na hodnotu True.

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

A váš výstup bude vyzerať takto:

Výpis 6. Výstup
Pole ( => Pole ( => Kráľ Artuš => Hľadanie Svätého grálu => Modrá) => Pole ( => Mark Twain => Whoopi Goldberg))

PHP vkladá údaje do ľahko analyzovateľného viacrozmerného poľa.

Ale to je len špička ľadovca, pokiaľ ide o spracovanie súborov v PHP. Zložitejšie funkcie, ako napríklad tidy_parse_file a xml_parse, vám môžu pomôcť analyzovať dokumenty HTML a XML. Podrobnejšie informácie o tom, ako tieto funkcie fungujú, nájdete v časti. Oboje stojí za zváženie, ak budete pracovať s týmito typmi súborov, ale namiesto prechádzania všetkými možnými typmi súborov sa možno budete chcieť bližšie pozrieť na obsah tohto článku, ktorý obsahuje niekoľko dobrých všeobecných pravidiel pre pracovať s funkciami, ktoré som doteraz opísal.

Dobrý štýl programovania

Nikdy nepredpokladajte, že všetko vo vašom programe bude fungovať podľa plánu. Napríklad: čo ak bol hľadaný súbor presunutý? Čo ak zmena povolenia spôsobí, že nebudete môcť čítať obsah súboru? Existenciu súboru a práva na jeho čítanie môžete vopred skontrolovať pomocou metód file_exists a is_readable.

Výpis 7. Použitie file_exists a is_readable
$filename = "myfile"; if (file_exists($filename) && is_readable ($filename)) ( $fh = fopen($filename, "r"); # Processing fclose($fh); )

V praxi však bude tento kus programu pravdepodobne pre vašu úlohu prehnaný. Manipulácia s hodnotami vrátenými fopenom je jednoduchšia a presnejšia.

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

Keďže fopen v prípade zlyhania vráti hodnotu False, zabezpečí sa tým, že súbor bude spracovaný iba vtedy, ak je možné súbor otvoriť. Samozrejme, ak súbor neexistuje alebo je nečitateľný, očakávali by ste, že návratová hodnota bude záporná. Preto je takáto kontrola pascou, do ktorej padajú všetky potenciálne problémy. Prípadne môžete ukončiť program alebo zobraziť chybové hlásenie, ak sa súbor nedá otvoriť.

Podobne ako fopen, funkcie file_get_contents, file a readfile vrátia hodnotu False, ak súbor nemožno otvoriť alebo spracovať. Funkcie fgets, fgetss, fread, fscanf a fclose tiež vrátia hodnotu False, ak sa vyskytne chyba. Samozrejme, s výnimkou fclose ste už pravdepodobne spracovali výsledky, ktoré vracajú. Pokiaľ ide o fclose , nedá sa veľa urobiť, ak sa rukoväť súboru nezatvorí správne, takže kontrola návratovej hodnoty fclose je vo všeobecnosti prehnaná.

Výber je na tebe

PHP nemá nedostatok efektívnych spôsobov čítania a analýzy súborov. Klasické funkcie, ako je fread, vám môžu väčšinu času spoľahlivo slúžiť, alebo vás môže viac lákať jednoduchosť readfile, ak je to to, čo potrebujete na vykonanie úlohy. Výber skutočne závisí od toho, čo sa snažíte dosiahnuť.

Ak spracovávate veľké množstvo údajov, pravdepodobne zistíte, že fscanf je užitočnejší a efektívnejší ako napríklad použitie súboru v kombinácii s nasledujúcimi príkazmi split a sprintf. Ak však jednoducho zobrazujete veľké množstvo textu s malými zmenami, použitie funkcií file , file_get_contents alebo readfile môže dávať väčší zmysel. Toto riešenie bude pravdepodobne správne pri použití PHP na ukladanie do vyrovnávacej pamäte alebo dokonca na vytvorenie dočasného proxy servera.

PHP poskytuje mnoho nástrojov na prácu so súbormi. Spoznajte každého z nich lepšie a zistite, ktoré nástroje sú najlepšie pre projekt, na ktorom pracujete. Ponúka sa vám široký výber softvérových nástrojov, využívajte ich najefektívnejšie a bavte sa pri spracovávaní súborov pomocou PHP.

V PHP sa často musíte zaoberať vytvorením súboru... je to veľmi jednoduché: na disku nie je žiadny súbor, kód sa spustil a súbor sa objavil, potom môžete tento súbor načítať do inej premennej alebo dokonca ľubovoľnej stránky na Internet a potom tam niečo napíš... ale na to treba poznať špeciálne funkcie... viac o tom v tomto článku...

Ak chcete vytvoriť súbor v PHP v spustiteľnom skripte, stačí zadať niekoľko funkcií:

Pozrime sa na príklad:

$text = "Nejaký druh textu na zápis do súboru";
$fp = fopen("subor.txt", "w");
fwrite($fp, $text);
fclose($fp);
?>

Tu by ste mali vedieť:

fopen()- funkcia otvorí súbor na čítanie alebo zápis a objasnenie;

Toto objasnenie (parameter režimu funkcie fopen) je veľmi dôležité:

  • "r" - otvorte súbor v php Len na čítanie. Kurzor sa umiestni na začiatok.
  • "r+" - otvorte súbor v php na čítanie a písanie. Kurzor sa umiestni na začiatok. !!! - pri týchto dvoch režimoch r a r+ už musia byť súbory vytvorené (inak sa objaví chyba Upozornenie: fopen(súbor.txt): Nepodarilo sa otvoriť stream: Žiadny takýto súbor alebo adresár v ...), a iba čítame alebo máme možnosť doplniť.
  • "w" - súbor sa otvorí LEN na zápis. Súbor sa skráti na nulovú dĺžku - čiže sa prepíše. Zapíše sa čo treba a kurzor sa umiestni na začiatok.
  • "w+" - otvorí súbor na zápis A ČÍTANIE! Zvyšok je rovnaký ako v režime "w". !!! - v týchto dvoch režimoch - ak súbor nebol vytvorený - BUDE POKUS O VYTVORENIE!
  • "a" - otvorte súbor LEN na zápis. Na rozdiel od "w" táto voľba neprepíše obsah súboru, ale umiestni kurzor na koniec riadku a pripojí obsah, ktorý sme chceli pridať na koniec.
  • "a+" - otvorte súbor na zápis a čítanie.

fwrite($fp, $text) - funkcia na zápis do súboru v PHP - teda to, čo je v premennej $text, sa zapíše do súboru, ktorý je v premennej $fp;

fclose($fp) - funkcia na zatvorenie súboru, ktorý sme zapísali do premennej $fp;

Teraz môžete ľahko vytvárať súbory v php správne, otvárať ich na čítanie a úpravy.

Užitočné doplnky a funkcie PHP pre prácu s otvoreným súborom:

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

tu je splnená podmienka - „urob to, kým sa nedosiahne koniec súboru“ while(!feof($fp))

1. Funkcia fgets($fp, 99) – umožňuje vám rozdeliť celý obsah do sekcií s veľkosťou 99 bajtov a viac, aby ste to videli jasnejšie, umiestnime značku

Táto funkcia reťazca fgets(resource handle [, int length]) štandardne akceptuje 1024 bajtov (1 kilobajt) ako parameter dĺžky, ak nie je zadaný, bude to tak. Tento parameter je od PHP 4.2.0 voliteľný (v prípade chyby vráti hodnotu FALSE)

Ďalšie funkcie na otváranie, písanie a vytváranie súboru

Funkcia - int readfile(reťazec názov_súboru [, bool use_include_path [, kontext zdroja]]) - čítať súbor ako celok.

Číta súbor a zapisuje obsah do výstupnej vyrovnávacej pamäte. A vráti počet výstupných bajtov. V prípade chyby sa vráti, ak sa pes nepoužíva - @readfile.

Stane sa niečo takéto:

Na konci slova je značka
.

b. Funkcia - pole súbor(reťazec názov_súboru [, int use_include_path [, zdrojový kontext]]), robí to isté ako funkcia readfile, s jednou výnimkou pridáva obsah súboru do poľa:

Týmto spôsobom môžete čítať ľubovoľné stránky na internete: $lines = file("http://site/"); a iterujte cez pole pomocou funkcie foreach;

3a. reťazcová funkcia file_get_contents(reťazec názov_súboru [, bool use_include_path [, zdroj kontext [, int offset [, int maxlen]]]] – umožňuje získať obsah ako jeden reťazec.

Toto je univerzálnejšia funkcia PHP na čítanie súboru, podobná funkcii súbor, len obsah sa vracia ako reťazec, nie pole a môžete nastaviť podmienky - ktorým bytom začať - offset a kde skončiť - maxlen. V prípade zlyhania sa vráti FALSE.

Dôležité!!!- v tomto prípade funkcia nahradí 3 naraz: fopen(), fread() a fclose() a zbaví sa tak značky.

3b. funkcia int file_put_contents(reťazec názov súboru, zmiešané údaje [, príznaky int [, kontext zdroja]]) - identické so sekvenčnými volaniami funkcií fopen(), fwrite() a fclose() - vracia počet zapísaných bajtov.

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

file_get_contents — Prečíta obsah súboru do reťazca

Popis

Reťazec file_get_contents (reťazec $názov súboru [, bool $use_include_path = false [, zdroj $kontext [, int $ offset = -1 [, int $maxlen ]]]])

Táto funkcia je podobná funkcii súbor() len s tým rozdielom file_get_contents() vráti obsah súboru v reťazci, počnúc zadaným posunom a až do maxlen bajtov. V prípade zlyhania, file_get_contents() vráti sa FALSE.

Pomocou funkcie file_get_contents() Najvýhodnejšie je, ak potrebujete získať celý obsah súboru, pretože funkcia využíva techniku ​​mapovania súborov do pamäte na zlepšenie výkonu, ak ju podporuje váš operačný systém.

Komentujte:

Ak otvárate URI obsahujúce špeciálne znaky, ako je medzera, musíte URI zakódovať pomocou urlencode().

Zoznam parametrov

Názov súboru, ktorý sa číta.

Use_include_path

Komentujte:

Od PHP 5 môžete použiť konštantu FILE_USE_INCLUDE_PATH na vyhľadanie súboru v zahrnutej ceste.

kontext

Platný kontextový zdroj vytvorený pomocou funkcie stream_context_create(). Ak nie je potrebné použiť špeciálny kontext, môžete tento parameter preskočiť zadaním hodnoty NULOVÝ.

Posun, pri ktorom sa začne čítanie pôvodného streamu.

Offsetové vyhľadávanie nie je podporované pri práci so vzdialenými súbormi. Pokus o nájdenie posunu na nelokálnych súboroch môže fungovať pri malých posunoch, ale výsledok je nepredvídateľný, pretože beží na streame s vyrovnávacou pamäťou.

Maximálna veľkosť načítaných údajov. Štandardne sa čítanie vykonáva, kým sa nedosiahne koniec súboru. Upozorňujeme, že toto nastavenie platí aj pre streamy s filtrami.

Návratové hodnoty

Funkcia vracia načítané dáta resp FALSE v prípade chyby.

Pozornosť

Táto funkcia sa môže vrátiť ako boolovská hodnota FALSE a neboolovská hodnota, na ktorú sa pretypuje FALSE. Ďalšie informácie nájdete v časti Booleovský typ. Pomocou operátora === skontrolujte hodnotu vrátenú touto funkciou.

Chyby

Vygeneruje sa chyba úrovne E_UPOZORNENIE, ak nie je možné nájsť parameter súboru, parameter maxlength je menší ako nula alebo vyhľadávanie na offsetovom posune v prúde zlyhá.

Príklady

Príklad č. 1 Získajte a zobrazte zdrojový kód domovskej stránky webovej lokality

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

Príklad č. 2 Hľadanie súborov v include_path

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

Príklad č. 3 Čítanie časti súboru

// Čítanie 14 znakov, počnúc znakom 21
$cast = file_get_contents(./people.txt" , NULL , NULL , 20 , 14 );
var_dump($sekcia);
?>

Výsledkom spustenia tohto príkladu bude niečo také:

string(14) "lle Bjori Ro"

Príklad č. 4 Používanie streamingových kontextov

// Vytvorenie vlákna
$opts = pole(
"http" =>pole(
"method" => "GET" ,
"header" => "Jazyk prijatia: sk\r\n" .
"Cookie: foo=bar\r\n"
);

$context = stream_context_create ($opts);

// Otvorte súbor pomocou vyššie uvedených hlavičiek HTTP
$file = file_get_contents ("http://www.example.com/" , false , $kontext );
?>

Close_notify. PHP to ohlási ako „SSL: Fatal Protocol Error“ v momente, keď sa dostanete na koniec údajov. Aby ste to obišli, mali by ste nastaviť error_reporting na úroveň, ktorá vylučuje E_WARNING. PHP verzie 4.3.7 a staršie dokážu pri otváraní streamu pomocou wrapperu zistiť, že na strane servera je problematická IIS https:// a nezobrazuje varovanie. Ak používate fsockopen() na tvorbu ssl:// zásuvku, je vašou zodpovednosťou zistiť a potlačiť toto varovanie.