Php čtení souboru od konce. PHP: Přečtěte si soubor PHP. Práce se soubory v PHP: čtení, zápis a doporučení. Vytváření a mazání souborů

PHP

file_exists("test.txt")//Existuje soubor? filesize("test.txt");//Zjistit velikost souboru //Je vráceno časové razítko: fileatime("test.txt");//Datum posledního přístupu k souboru //date("d M Y" , $atime); filemtime("test.txt");//Datum úpravy souboru //date("d M Y", $mtime); filectime("test.txt");//Datum vytvoření souboru (Windows) //date("d M Y", $ctime);

Soubory: provozní režimy

PHP

resource fopen (řetězcový název souboru, režim řetězce) // resource - v případě úspěchu vrací ukazatel na soubor, v případě chyby FALSE
Pracovní režim Popis
r otevřít soubor jen pro čtení;
r+ otevřít soubor pro čtení a zápis;
w otevřít soubor pouze pro zápis. Pokud existuje, bude aktuální obsah souboru zničen. Aktuální pozice je nastavena na začátek;
w+ otevřete soubor pro čtení a zápis. Pokud existuje, bude aktuální obsah souboru zničen. Aktuální pozice je nastavena na začátek;
A otevřete soubor pro zápis. Aktuální pozice je nastavena na konec souboru;
a+ otevřete soubor pro čtení a zápis. Aktuální pozice je nastavena na konec souboru;
b zpracovat binární soubor. Tento příznak je vyžadován při práci s binárními soubory v systému Windows.

Otevírání a zavírání souborů v PHP

PHP

$fi = fopen("test.html", "w+") or die("Chyba"); //Příklady $fi = fopen("http://www.you/test.html","r"); $fi = fopen("http://ftp.you/test.html", "r"); //Zavřít fclose($fi)

Čtení souborů v PHP

PHP

//Čtení souboru fread(int fi, délka int) $str = fread($fi, 5); // Přečte prvních 5 znaků echo $str; // protože se kurzor posunul $str = fread($fi, 12); // Přečte dalších 12 znaků echo $str; fgets(int fi[, délka int]) // Přečtení řádku ze souboru fgetss(int fi, délka int [, povolený řetězec]) // Přečtení řádku ze souboru a vyřazení značek HTML // povolený řetězec - značky, které musí být ponecháno fgetc(int fi) //Čte znak ze souboru

Zpočátku se zápis provede na začátku souboru přepsáním existujících dat, pokud existují. Pokud tedy potřebujete něco zapsat na konec souboru, musíte to nastavit režim čtení, například a+ .

Manipulace s kurzorem v souborech PHP

PHP

int fseek(int fi, int offset [, int odkud]) //Nastavení kurzoru // int fi - ukazatel na soubor //offset - počet znaků, které se mají přesunout. //odkud: //SEEK_SET - pohyb začíná od začátku souboru; //SEEK_CUR - pohyb začíná z aktuální pozice; //SEEK_END - pohyb začíná od konce souboru. fseek($fi, -10, SEEK_END); //Přečtení posledních 10 znaků $s = fread($fi, 10); $pos = ftell($fi); //Zjistit aktuální pozici zpět ($f)//resetovat kurzor bool feof($f) //konec souboru

Přímá práce se soubory (daty) v PHP

PHP

array file(string filename) // Získání obsahu souboru ve formě pole // Další možnost pro přímou práci s daty file_get_contents(string filename) // Čtení (získání celého souboru na jeden řádek) // Zápis do soubor (původně přepsaný) file_put_contents(řetězec název_souboru, smíšená data[, příznak int]); //FILE_APPEND // Zápis na konec souboru: file_put_contents("test.txt", "data", FILE_APPEND); //Pokud napíšete pole, $array = array("I", "live"); file_put_contents("test.txt",$array); //pak dostaneme "Ilive"

Správa souborů v php

PHP

copy(zdroj řetězce, cíl řetězce); // Kopírování souboru rename(str oldname, str newname); // Přejmenujte soubor unlink(string filename); // Mazání souboru

Nahrávání souborů na PHP server

//Nastavení PHP.ini file_uploads (on|off) // povolení nebo zakázání nahrávání souboru upload_tmp_dir // dočasná složka pro nahrané soubory. ve výchozím nastavení dočasná složka upload_max_filesize (výchozí = 2 Mb) // max. velikost nahrávaného souboru post_max_size // celková velikost odeslaného formuláře (musí být větší než upload_max_filesize) // Jednoduché nahrání

HTML

Práce se soubory na serveru

PHP

//Přijmout data $tmp = $_FILES["userfile"]["tmp_name"]; $name = $_FILES["soubor uživatele"]["jméno"]; //Přesuňte soubor move_uploaded_file($tmp, název); move_uploaded_file($tmp, "nahrát/".jméno); // přesměrování souboru do složky pro nahrávání // vzhledem k aktuálnímu souboru // Co je v poli $_FILES $_FILES["userfile"]["name"] // název souboru, například test.html $_FILES[ "userfile"][" tmp_name"] // název dočasného souboru (cesta) $_FILES["userfile"]["size"] // velikost souboru $_FILES["userfile"]["type"] // typ souboru $ _FILES["userfile"] ["error"] // 0 - žádné chyby, číslo - ano řetězec fgets(handle zdroje [, délka int])

Vrátí řetězec délky - 1 bajt přečtený z deskriptoru souboru, na který ukazuje handle. Čtení končí, když počet přečtených bytů dosáhne délky - 1, když dosáhne konce řádku (který je zahrnut do návratové hodnoty), nebo když dosáhne konce souboru (podle toho, co nastane dříve). Není-li délka zadána, výchozí hodnota je 1 kilobajt nebo 1024 bajtů.

Pokud dojde k chybě, funkce se vrátí NEPRAVDIVÉ .

Nejčastější chyby:

Programátoři zvyklí na sémantiku „C“ funkcí fgets(), musí vzít v úvahu rozdíl ve způsobu vrácení příznaku konce souboru (EOF).

Ukazatel souboru musí být platný a musí ukazovat na soubor úspěšně otevřený funkcemi fopen() nebo fsockopen() .

Níže uvádíme jednoduchý příklad:


Příklad 1. Čtení souboru řádek po řádku

$handle = fopen("/tmp/vstupni soubor.txt" , "r" );
zatímco (! feof ($handle )) (
$buffer = fgets($handle, 4096);
echo $buffer ;
}
fclose($handle);
?>

Komentář: Počínaje verzí PHP 4.2.0 se parametr délky stal volitelným. Pokud je tento parametr vynechán, předpokládá se, že délka řetězce je 1024. Od PHP 4.3 vynechání parametru length způsobí, že se proud načte až do konce řetězce. Pokud je většina řádků v souboru delší než 8 kilobajtů, nejúčinnějším rozhodnutím ohledně zdrojů používaných skriptem je zadat maximální délku řádku.

Komentář: Tato funkce dokáže správně zpracovat binární data počínaje PHP 4.3. Dřívější verze tuto funkci neměly.

O používání funkcí fopen, fclose, feof, fgets, fgetss a fscanf

Pojďme si vyjmenovat všechny možnosti

Jednou z výhod práce s moderními programovacími jazyky, jako je PHP, je množství dostupných funkcí. PHP by mohlo snadno převzít motto Perlu: „Existuje více než jeden způsob, jak něco udělat“, zejména pokud jde o zpracování souborů. Ale s množstvím dostupných nástrojů vyvstává otázka, který z nich je nejlepší pro provedení práce. Odpověď na tuto otázku samozřejmě závisí na tom, jaké jsou vaše cíle při zpracování souboru, takže osvojení všech schopností jazyka stojí za váš čas.

Tradiční fopen metody

Metody fopen jsou programátorům v C a C++ z minulosti možná nejznámější, protože jsou to víceméně nástroje, které máte na dosah ruky po celá léta, pokud jste s těmito programovacími jazyky pracovali. Pro kteroukoli z těchto metod postupujte podle standardního postupu, pomocí fopen otevřete soubor, funkce pro načtení dat a poté fclose pro zavření souboru, jak je znázorněno ve výpisu 1.

Výpis 1. Otevření a čtení souboru pomocí fgets
$file_handle = fopen("myfile", "r"); while (!feof($soubor_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Přestože tyto funkce zná většina zkušených programátorů, dovolte mi rozebrat, jak fungují. Ve skutečnosti postupujete takto:

  1. Otevřete soubor. $file_handle ukládá odkaz na samotný soubor.
  2. Zkontrolujte, zda jste dosáhli konce souboru.
  3. Pokračujte ve čtení souboru, dokud se nedostanete na konec, vytiskněte každý přečtený řádek.
  4. Zavřete soubor.

S ohledem na to se podívám na každou použitou souborovou funkci.

funkce fopen

Funkce fopen naváže připojení k souboru. Říkám „naváže spojení“, protože kromě otevření souboru může fopen otevřít také adresu URL:

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

Tato řada programu vytvoří odkaz na výše uvedenou stránku a umožní vám ji začít číst jako místní soubor.

Poznámka: Možnost "r" použitá ve fopen označuje, že soubor je otevřen jen pro čtení. Vzhledem k tomu, že zápis do souboru není zahrnut v rozsahu problémů diskutovaných v tomto článku, nebudu uvádět všechny možné hodnoty parametru. Musíte však změnit „r“ na „rb“, pokud čtete z binárních souborů pro kompatibilitu mezi platformami. Níže je uveden příklad tohoto typu.

funkce feof

Příkaz feof určuje, zda čtení dosáhlo konce souboru a vrací True nebo False. Smyčka zobrazená v pokračuje až do konce souboru "myfile." Všimněte si, že feof také vrátí hodnotu False, pokud čtete URL a vyprší časový limit připojení, protože již nejsou k dispozici žádná data ke čtení.

Funkce fclose

Přeskočme střed výpisu 1 a přejdeme na konec; fclose dělá opak fopen: zavře připojení k souboru nebo URL. Po provedení této funkce již nebudete moci číst ze souboru nebo soketu.

funkce fgets

Vrátíme-li se o několik řádků zpět ve výpisu 1, dostanete se k jádru procesu zpracování souboru: ke skutečnému čtení souboru. Funkce fgets je vaší zbraní pro první příklad. Vezme řádek dat ze souboru a vrátí je jako řetězec. Odtud můžete data zobrazit nebo je jinak zpracovat. Příklad ve výpisu 1 vytiskne celý soubor.

Pokud se rozhodnete omezit velikost datového bloku, se kterým pracujete, můžete přidat argument fgets, abyste omezili maximální délku zachyceného datového řetězce. Například pomocí následujícího kódu omezte délku řádku na 80 znaků:

$string = fgets($soubor_handle, 81);

Myslete na "\0", indikátor konce řádku v C, a nastavte délku o jeden znak delší, než ve skutečnosti potřebujete. Jak vidíte, výše uvedený příklad používá 81, zatímco vy potřebujete 80 znaků. Zvykněte si přidat další znak, kdykoli potřebujete nastavit limit délky řádku pro danou funkci.

fread funkce

Funkce fgets je jen jednou z mnoha funkcí dostupných pro čtení souboru. Toto je jedna z nejčastěji používaných funkcí, protože zpracování souboru řádek po řádku ve většině případů dává největší smysl. Ve skutečnosti několik dalších funkcí nabízí podobné možnosti. Ať je to jak chce, analýza řádek po řádku není vždy to, co potřebujete.

A zde se dostáváme k freadu. Funkce fread má trochu jiný účel než fgets: je určena ke čtení z binárních souborů (tj. souborů, které zpočátku nesestávají z textu čitelného člověkem). Protože koncept "řádků" není pro binární soubory relevantní (logické datové struktury nejsou obvykle rozděleny do řádků), musíte zadat počet bajtů, které mají být načteny.

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

Výše uvedený příklad přečte 4096 bajtů (4 KB) dat. Všimněte si, že bez ohledu na zadanou hodnotu přečte fread maximálně 8192 bajtů (8 kB).

Za předpokladu, že soubor není větší než 8 KB, níže uvedený fragment programu by měl přečíst celý soubor na jednom řádku.

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

Pokud je velikost souboru větší, budete muset ke čtení zbytku použít smyčku.

funkce fscanf

Když se vrátíme ke zpracování řetězců, fscanf je také nástupcem tradiční funkce knihovny souborů C. Pokud s ní nejste obeznámeni, fscanf čte datová pole do proměnných ze souboru.

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

Formátovací řetězce použité v této funkci jsou popsány v mnoha zdrojích, jako je PHP.net, takže zde tyto informace nebudu opakovat. Stačí říci, že formátování řetězců je velmi flexibilní. Je třeba také zmínit, že všechna pole jsou umístěna v proměnné vrácené funkcí. (V C by to byly předány jako argumenty.)

funkce fgetss

Funkce fgetss se liší od tradičních funkcí pro manipulaci se soubory a umožňuje vám lépe porozumět možnostem PHP. Funguje jako fgets, ale zahodí všechny tagy HTML nebo PHP, které zjistí, a ponechá pouze holý text. Vezměme si níže uvedený soubor HTML.

Výpis 2. Příklad HTML souboru
Můj titul

Pokud rozumíte tomu, co znamená „Protože neexistuje“ nikdo, kdo by vám nedal bolest, pak posloucháte příliš mnoho z kapely America

Předejme to funkci fgetss.

Výpis 3. Použití fgetss
$file_handle = fopen("myfile", "r"); while (!feof($soubor_handle)) ( echo = fgetss($soubor_handle); ) fclose($file_handle);

To je to, co dostanete jako výstup:

Můj název Pokud rozumíte tomu, co znamená "Protože tu není nikdo, kdo by vám nedal bolest", pak posloucháte příliš mnoho z kapely America

funkce fpassthru

Bez ohledu na to, jak čtete data ze souboru, můžete zbývající data vytisknout pomocí standardního výstupního kanálu pomocí funkce fpassthru.

fpassthru($fh);

Tato funkce vytiskne data, takže je nemusíte vkládat do proměnné.

Nelineární zpracování souborů: pohyb v souboru

Výše popsané funkce vám samozřejmě umožňují číst ze souboru pouze postupně. Složitější soubory mohou vyžadovat přesunutí do různých částí souboru na začátku nebo na konci souboru. K tomu potřebujete funkci fseek.

fseek($fh, 0);

Výše uvedený příklad se vrací na začátek souboru. Pokud se nechcete přesouvat na úplný začátek souboru – řekněme stačí jeden kilobajt – jednoduše napíšete:

fseek($fh, 1024);

Od PHP V4.0 je k dispozici také několik dalších možností. Pokud se například potřebujete posunout dopředu o 100 bajtů ze své aktuální pozice, můžete použít následující kód:

fseek($fh, 100, SEEK_CUR);

Podobně se posun o 100 bajtů zpět provede:

fseek($fh, -100, SEEK_CUR);

Pokud se chcete vrátit na pozici 100 bajtů před koncem souboru, použijte místo toho SEEK_END.

fseek($fh, -100, SEEK_END);

Jakmile je dosaženo nové pozice, můžete ke čtení dat použít fgets, fscanf nebo jinou funkci.

Poznámka: nemůžete použít fseek na deskriptory souboru odkazující na URL.

Zachyťte celý soubor

Nyní se podíváme na některé z jedinečných schopností PHP pro zpracování souborů: zpracování velkých bloků dat v jednom nebo dvou řádcích. Jak můžete například uchopit soubor a zobrazit celý jeho obsah na své webové stránce? No, viděli jste příklad použití smyčky s fgets. Ale jak si to můžete usnadnit? Tento proces je téměř směšně snadný pomocí fgetcontents, který umístí celý soubor na řádek.

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

Ačkoli to není nejlepší možnost, můžete tento příkaz napsat ještě kratší:

echo file_get_contents("myfilename");

Tento článek se primárně zaměřuje na zpracování místních souborů, nicméně stojí za zmínku, že pomocí popsaných funkcí můžete také zachytit, zobrazit a analyzovat další webové stránky.

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

Tento příkaz je ve skutečnosti stejný jako:

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

Možná se díváte na tyto příklady a říkáte si: "To je hodně práce." Vývojáři PHP s vámi souhlasí. Výše uvedený příkaz tedy můžete zkrátit na:

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

Funkce readfile odešle celý obsah souboru nebo webové stránky do výchozí výstupní vyrovnávací paměti. Ve výchozím nastavení tento příkaz zobrazí chybovou zprávu, když selže. Chcete-li se tomuto chování vyhnout (pokud jej chcete), vyzkoušejte příkaz:

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

Samozřejmě, pokud potřebujete zpracovat obsah souborů, pak jeden řádek vrácený file_get_contents je pravděpodobně příliš. Možná jej budete chtít nejprve rozdělit na části pomocí funkce split().

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

Ale proč potřebujete všechnu tuto složitost, pokud existuje dokonale vhodná funkce, která tuto práci udělá za vás? Funkce PHP file() provádí tento úkol v jednom kroku: vrací pole řetězců, jehož prvky jsou řádky souboru.

$array = soubor("mujsoubor");

Je třeba poznamenat, že mezi dvěma výše uvedenými příklady je nepatrný rozdíl. Příkaz split odstraní nové řádky, zatímco příkaz file ukončí řádky pole pomocí nových řádků (stejně jako fgets).

Schopnosti PHP však dalece přesahují výše popsané. Můžete analyzovat celé soubory .ini ve stylu PHP pomocí jediného příkazu parse_ini_file. Příkaz parse_ini_file se vztahuje na soubory podobné těm, které jsou uvedeny ve výpisu 4.

Výpis 4. Příklad souboru .ini
; Jméno komentáře = Úkol "Král Artuš" = Hledání svatého grálu oblíbená barva = Modrá Samuel Clemens = Mark Twain Caryn Johnson = Whoopi Goldberg

Následující příkazy představují soubor jako pole a poté pole vytisknou:

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

Výsledkem bude následující výstup:

Výpis 5. Výstup
Array ( => Král Artuš => Hledat Svatý grál => Modrá => Mark Twain => Whoopi Goldberg)

Samozřejmě si můžete všimnout, že tento příkaz sloučil sekce. Toto je výchozí akce, ale můžete si ji snadno přizpůsobit pomocí druhého argumentu parse_ini_file: process_sections, což je booleovská proměnná. Nastavte process_sections na hodnotu True.

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

A váš výstup bude vypadat takto:

Výpis 6. Výstup
Pole ( => Pole ( => Král Artuš => Hledat Svatý grál => Modrá) => Pole ( => Mark Twain => Whoopi Goldberg))

PHP vkládá data do snadno analyzovatelného vícerozměrného pole.

Ale to je jen špička ledovce, pokud jde o zpracování souborů v PHP. Složitější funkce, jako je tidy_parse_file a xml_parse, vám mohou pomoci analyzovat dokumenty HTML a XML. Podrobnější informace o tom, jak tyto funkce fungují, naleznete v části. Obojí stojí za zvážení, pokud budete s těmito typy souborů pracovat, ale místo procházení všech možných typů souborů se možná budete chtít blíže podívat na obsah tohoto článku, který obsahuje některá dobrá obecná pravidla pro práce s funkcemi, které jsem dosud popsal.

Dobrý styl programování

Nikdy nepředpokládejte, že vše ve vašem programu bude fungovat tak, jak bylo zamýšleno. Například: co když byl hledaný soubor přesunut? Co když změna oprávnění způsobí, že nebudete moci číst obsah souboru? Existenci souboru a práva k jeho čtení můžete předem zkontrolovat pomocí metod file_exists a is_readable.

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

V praxi však bude tento program pravděpodobně pro váš úkol přehnaný. Manipulace s hodnotami vrácenými fopenem je jednodušší a přesnější.

if ($fh = fopen($název souboru, "r")) ( # Zpracování fclose($fh); )

Protože fopen v případě selhání vrátí hodnotu False, zajistí to, že soubor bude zpracován pouze v případě, že jej lze otevřít. Samozřejmě, pokud soubor neexistuje nebo je nečitelný, očekáváte, že vrácená hodnota bude záporná. Proto je taková kontrola pastí, do které spadají všechny potenciální problémy. Případně můžete ukončit program nebo zobrazit chybovou zprávu, pokud soubor nelze otevřít.

Stejně jako fopen, funkce file_get_contents, file a readfile vrátí hodnotu False, pokud soubor nelze otevřít nebo zpracovat. Funkce fgets, fgetss, fread, fscanf a fclose také vrátí hodnotu False, pokud dojde k chybě. Samozřejmě, s výjimkou fclose , jste pravděpodobně již zpracovali výsledky, které vrací. Pokud jde o fclose , nelze toho mnoho udělat, pokud se handle souboru nezavře správně, takže kontrola návratové hodnoty fclose je obecně přehnaná.

Volba je na tobě

PHP nemá nedostatek efektivních způsobů, jak číst a analyzovat soubory. Klasické funkce jako fread vám mohou většinu času spolehlivě sloužit, nebo vás může více přitahovat jednoduchost readfile, pokud je to to, co potřebujete ke své práci. Výběr opravdu závisí na tom, čeho se snažíte dosáhnout.

Pokud zpracováváte velké množství dat, pravděpodobně shledáte fscanf užitečnější a efektivnější než například použití souboru v kombinaci s následnými příkazy split a sprintf. Pokud však pouze zobrazujete velké množství textu s drobnými změnami, může dávat větší smysl použití funkcí file , file_get_contents nebo readfile. Toto řešení bude pravděpodobně správné při použití PHP pro ukládání do mezipaměti nebo dokonce vytvoření dočasného proxy serveru.

PHP poskytuje mnoho nástrojů pro práci se soubory. Seznamte se lépe s každým z nich a zjistěte, které nástroje jsou nejlepší pro projekt, na kterém pracujete. Nabízí se vám široký výběr softwarových nástrojů, používejte je nejefektivněji a bavte se zpracováváním souborů pomocí PHP.

V PHP se často musíte vypořádat s vytvořením souboru... je to velmi jednoduché: na disku není žádný soubor, kód byl spuštěn a soubor se objevil, pak můžete tento soubor načíst do jiné proměnné nebo dokonce na jakoukoli stránku na Internet a pak tam něco napsat... ale k tomu je potřeba znát speciální funkce... více o tom v tomto článku...

Chcete-li vytvořit soubor v PHP ve spustitelném skriptu, stačí zadat několik funkcí:

Podívejme se na příklad:

$text = "Nějaký druh textu k zápisu do souboru";
$fp = fopen("soubor.txt", "w");
fwrite($fp, $text);
fclose($fp);
?>

Tady byste to měli vědět:

fopen()- funkce otevře soubor pro čtení nebo zápis a vysvětlení;

Toto upřesnění (parametr režimu funkce fopen) je velmi důležité:

  • "r" - otevřete soubor v php Pouze na čtení. Kurzor se umístí na začátek.
  • "r+" - otevřete soubor v php pro čtení a psaní. Kurzor se umístí na začátek. !!! - v těchto dvou režimech r a r+ musí být soubory již vytvořeny (jinak se objeví chyba Varování: fopen(soubor.txt): Nepodařilo se otevřít stream: Žádný takový soubor nebo adresář v ...), a pouze čteme nebo máme možnost doplnit.
  • "w" - soubor se otevře POUZE pro zápis. Soubor se zkrátí na nulovou délku - tedy přepíše. Zapíše se co je potřeba a kurzor se umístí na začátek.
  • "w+" - otevře soubor pro zápis A ČTENÍ! Zbytek je stejný jako v režimu "w". !!! - v těchto dvou režimech - pokud soubor nebyl vytvořen - BUDE PROVEDEN POKUS O JEHO VYTVOŘENÍ!
  • "A" - otevřít soubor POUZE pro zápis. Na rozdíl od "w" tato volba nepřepíše obsah souboru, ale umístí kurzor na konec řádku a připojí obsah, který jsme chtěli přidat na konec.
  • "a+" - otevřete soubor pro zápis a čtení.

fwrite($fp, $text) - funkce pro zápis do souboru v PHP - tedy to, co je v proměnné $text, se zapisuje do souboru, který je v proměnné $fp;

fzavřít($fp) - funkce pro uzavření souboru, který jsme zapsali do proměnné $fp;

Nyní můžete snadno správně vytvářet soubory v php, otevírat je pro čtení a úpravy.

Užitečné doplňky a funkce PHP pro práci s otevřeným souborem:

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

zde je splněna podmínka - "dokud nebude dosaženo konce souboru, proveďte toto" while(!feof($fp))

1. Funkce fgets($fp, 99) – umožňuje rozdělit veškerý obsah do sekcí o velikosti 99 bajtů a dále, abychom to viděli jasněji, umísťujeme značku

Tato funkce řetězce fgets(resource handle [, délka int]) standardně přijímá 1024 bajtů (1 kilobajt) jako parametr délky, pokud není zadán, bude tomu tak. Tento parametr je od PHP 4.2.0 volitelný (v případě chyby vrací FALSE)

Další funkce pro otevírání, zápis a vytváření souboru

Funkce - int readfile(řetězec název_souboru [, bool use_include_path [, kontext zdroje]]) - číst soubor jako celek.

Přečte soubor a zapíše obsah do výstupní vyrovnávací paměti. A vrátí počet bajtů výstupu. V případě chyby se vrátí, pokud se pes nepoužívá - @readfile.

Stane se něco takového:

Na konci slova je značka
.

b. Funkce - pole soubor(řetězec název_souboru [, int use_include_path [, zdrojový kontext]]), dělá totéž jako funkce readfile, s jedinou výjimkou přidá obsah souboru do pole:

Tímto způsobem můžete číst libovolné stránky na internetu: $lines = file("http://site/"); a iterujte polem pomocí funkce foreach;

3a. funkce řetězce file_get_contents(řetězec název_souboru [, bool use_include_path [, zdroj kontext [, int offset [, int maxlen]]]] – umožňuje získat obsah jako jeden řetězec.

Toto je univerzálnější funkce PHP pro čtení souboru, podobná funkci file, pouze obsah je vrácen jako řetězec, nikoli pole a lze nastavit podmínky - kterým byte začít - offset a kde skončit - maxlen. Při selhání vrátí hodnotu FALSE.

Důležité!!!- v tomto případě funkce nahradí 3 najednou: fopen(), fread() a fclose() a tím se zbaví značky.

3b. funkce int file_put_contents(řetězec název_souboru, smíšená data [, příznaky int [, kontext zdroje]]) - totožné se sekvenčním voláním funkcí fopen(), fwrite() a fclose() - vrací počet zapsaných bajtů.

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

file_get_contents — Přečte obsah souboru do řetězce

Popis

Tětiva file_get_contents (řetězec $filename [, bool $use_include_path = false [, zdroj $kontext [, int $offset = -1 [, int $maxlen ]]]])

Tato funkce je podobná funkci soubor() s jediným rozdílem, že file_get_contents() vrátí obsah souboru v řetězci, počínaje zadaným offsetem a až do maxlen bajtů. V případě neúspěchu, file_get_contents() vrátí se NEPRAVDIVÉ.

Pomocí funkce file_get_contents() Nejvýhodnější je, pokud potřebujete získat celý obsah souboru, protože tato funkce používá ke zlepšení výkonu techniku ​​mapování souborů do paměti, pokud je podporována vaším operačním systémem.

Komentář:

Pokud otevíráte URI obsahující speciální znaky, jako je mezera, musíte URI zakódovat pomocí urlencode().

Seznam parametrů

Název čteného souboru.

Use_include_path

Komentář:

Od PHP 5 můžete použít konstantu FILE_USE_INCLUDE_PATH pro vyhledání souboru v include path.

kontext

Platný kontextový prostředek vytvořený pomocí funkce stream_context_create(). Pokud není potřeba použít speciální kontext, můžete tento parametr přeskočit předáním hodnoty NULA.

Posun, ve kterém začne čtení původního datového proudu.

Hledání posunu není podporováno při práci se vzdálenými soubory. Pokus o nalezení offsetu u nelokálních souborů může fungovat pro malé offsety, ale výsledek je nepředvídatelný, protože běží na streamu s vyrovnávací pamětí.

Maximální velikost načtených dat. Ve výchozím nastavení se čtení provádí, dokud není dosaženo konce souboru. Toto nastavení platí také pro streamy s filtry.

Návratové hodnoty

Funkce vrací načtená data resp NEPRAVDIVÉ v případě chyby.

Pozornost

Tato funkce se může vrátit jako booleovská NEPRAVDIVÉ a jinou než booleovskou hodnotu, která je přetypována na NEPRAVDIVÉ. Další informace naleznete v části Booleovský typ. Pomocí operátoru === zkontrolujte hodnotu vrácenou touto funkcí.

Chyby

Bude generována chyba úrovně E_VAROVÁNÍ, pokud nelze najít parametr název_souboru, parametr maxlength je menší než nula nebo selže hledání na offsetovém posunu v proudu.

Příklady

Příklad č. 1 Získejte a zobrazte zdrojový kód domovské stránky webu

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

Příklad č. 2 Hledání souborů v include_path

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

Příklad č. 3 Čtení části souboru

// Přečte 14 znaků, počínaje znakem 21
$section = file_get_contents(./people.txt" , NULL , NULL , 20 , 14 );
var_dump($sekce);
?>

Výsledek spuštění tohoto příkladu bude něco takového:

řetězec(14) "lle Bjori Ro"

Příklad č. 4 Použití kontextů streamování

// Vytvořte vlákno
$opts = pole(
"http" =>pole(
"metoda" => "GET" ,
"header" => "Přijmout-jazyk: en\r\n" .
"Cookie: foo=bar\r\n"
);

$context = stream_context_create ($opts);

// Otevřete soubor pomocí výše uvedených HTTP hlaviček
$file = file_get_contents ("http://www.example.com/" , false , $kontext );
?>

Close_notify. PHP to ohlásí jako „SSL: Fatal Protocol Error“ ve chvíli, kdy se dostanete na konec dat. Chcete-li to obejít, měli byste nastavit error_reporting na úroveň, která vylučuje E_WARNING. PHP verze 4.3.7 a starší dokážou při otevírání streamu pomocí wrapperu zjistit, že na straně serveru je problematická IIS https:// a nezobrazuje varování. Pokud používáte fsockopen() pro tvoření ssl:// zásuvce, je vaší odpovědností toto varování detekovat a potlačit.