Práce se soubory v PHP. Čtení souboru, zápis do souboru. PHP tutoriál. Mazání souborů, změna chmod, práce s adresáři. C. Tvorba, čtení a zápis souborů PHP

Každý programátor by měl umět správně pracovat se soubory. Tento článek je zaměřen na začínající PHP programátory, ale „sbírka receptů“ bude užitečná i pro pokročilé uživatele.

Práce se soubory je rozdělena do 3 fází:

  1. Otevření souboru.
  2. Manipulace s daty.
  3. Zavírání souboru.

. Otevření souboru

Chcete-li otevřít soubor v prostředí PHP, použijte funkci fopen(). Požadované parametry pro tuto funkci jsou název souboru a režim souboru.

$fp = fopen("counter.txt", "r");

Podle dokumentace PHP se rozlišují následující typy režimů souborů:

  1. r – otevřít soubor pouze pro čtení.
  2. r+ - otevře soubor pro čtení a zápis současně.
  3. w – vytvoří nový prázdný soubor. Pokud takový soubor v době volání již existuje, je zničen.
  4. w+ - podobně jako r+, pouze pokud takový soubor v době volání existuje, jeho obsah je smazán.
  5. a – otevře existující soubor v režimu zápisu s ukazatelem posunutým na poslední bajt souboru (na konec souboru).
  6. a+ - otevře soubor v režimu čtení i zápisu, s ukazatelem posunutým na poslední bajt souboru (na konec souboru). Obsah souboru se nesmaže.

Poznámka: Na konci libovolného řádku může být ještě jeden volitelný parametr: b nebo t . Pokud je zadáno b, soubor se otevře v binárním režimu čtení/zápisu. Pokud t, pak je pro soubor nastaven režim překladu posunu řádků, tzn. je vnímána jako textová.

Chcete-li demonstrovat, zvažte následující scénář:

//Otevře soubor v různých režimech
$fp = fopen("counter.txt", "r"); // Binární režim
$fp = fopen("counter.txt", "rt"); // Textový režim
$fp = fopen("http://www.yandex.ru", "r");// Otevře připojení HTTP pro čtení
$fp = fopen("ftp://user: [e-mail chráněný]", "w"); //Otevře připojení FTP s uvedením přihlašovacího jména a hesla
?>

II. Manipulace s daty souborů

Pomocí této funkce můžete zapisovat data do souboru pomocí PHP fwrite(). Tato funkce má 2 požadované parametry a 1 volitelný. Požadované parametry jsou deskriptor souboru a režim souboru:

$fp = fopen("counter.txt", "a"); // Otevřete soubor v režimu nahrávání
$mytext = "Musíme napsat tento řádek\r\n"; // Zdrojový řetězec
$test = fwrite($fp, $mytext); // Zápis do souboru
if ($test) echo "Data byla úspěšně vložena do souboru.";
else echo "Chyba při zápisu do souboru.";
fclose($fp); //Zavřete soubor
?>

Chcete-li číst soubor řádek po řádku, použijte funkci fgets(). Funkce má 2 požadované parametry:


if ($fp)
{
zatímco (!feof($fp))
{
$mytext = fgets($fp, 999);
echo $mytext."
";
}
}

fclose($fp);
?>

Poznámka: V tomto příkladu hodnota 999 určuje počet znaků, které budou načteny, dokud ukazatel nedosáhne konce souboru (EOF).

Chcete-li číst soubor jako jeden celek, musíte použít funkci readfile(), který přebírá 1 požadovaný parametr. Funkce otevře soubor, zobrazí jeho obsah v okně prohlížeče a poté soubor zavře:

echoreadfile("counter.txt");
?>

Můžete také použít funkci fpassthru(), která přebírá 1 požadovaný parametr. Před použitím této funkce musíte soubor otevřít v režimu čtení. Po dokončení čtení souboru funkce automaticky soubor zavře (a deskriptor souboru se stane neplatným).

$fp = fopen("counter.txt", "r"); // Otevřete soubor v režimu čtení
if ($fp) echo fpassthru($fp);
elseecho "Chyba při otevírání souboru";
?>

Velmi často nastávají situace, kdy je potřeba načíst obsah webu do pole. Tato funkce zahrnuje použití funkce soubor(). Při volání této funkce bude každý řádek souboru uložen v samostatném prvku zadaného pole.

Poznámka: Funkce by se neměla používat soubor() do binárních souborů (binary-safe), protože Není bezpečný z hlediska čtení binárních souborů a pokud někde narazí na znak konce souboru (EOF), nezaručuje, že přečtete celý binární soubor.

$file_array = soubor("counter.txt"); // Načtení souboru do $file_array
// Práce s daty pole
?>

Poznámka: Práce s poli je podrobně popsána, autoři: Mukhametshin D.F., Simdyanov I.V.

Na konci článku najdete dobrý „receptář“ o polích, který nabízí řešení mnoha problémů, se kterými se webový programátor denně setkává.

Představme si situaci, kdy je potřeba číst soubor znak po znaku. K tomu můžeme použít funkci fgetc(). Funkce přebírá jeden parametr. Funkce je užitečná, pokud potřebujeme najít libovolný znak nebo počet stejných znaků.

$fp = fopen("counter.txt", "r"); // Otevřete soubor v režimu čtení
if ($fp)
{
while(!feof($fp))
{
$char = fgetc($fp);
if ($char == "c") $i = $i + 1;// Najděte znak "c"
}
echo "Počet písmen 'c' v souboru: ". $i;
}
else echo "Chyba při otevírání souboru";
?>

III. Zavření souboru

Soubor se zavře pomocí funkce fclose(), který přebírá 1 požadovaný parametr.

$fp = fopen("counter.txt", "r");
if ($fp)
{
echo "Soubor je otevřen";
fclose($fp); // Zavření souboru
}
?>

Sbírka receptů

1) Musíme zkontrolovat, zda ten či onen soubor existuje. K tomu použijeme funkci file_exists().

myfile("counter.txt"); // Použijte funkci myfile a předejte název souboru jako argument

function myfile($name) //Vytvoří funkci pro kontrolu existence souboru
{
if (file_exists($name)) echo "Soubor existuje";

}
?>

Poznámka: Funkce soubor_existuje nekontroluje soubory na vzdáleném webovém serveru. Aby funkce fungovala správně, musí být soubor se skriptem umístěn na stejném serveru jako kontrolovaný soubor.

2) Určete velikost souboru pomocí funkce velikost souboru()

myfile("counter.txt");

function myfile($name) //Vytvoří funkci pro kontrolu existence souboru a určení velikosti souboru
{
if (file_exists($name)) echo "Velikost souboru: ".filesize($name)." bytes";
else echo "Soubor neexistuje";
}
?>

3) Vytvořte dočasný soubor pomocí funkce tmpfile()

$myfile = tmpfile();
fwrite($myfile, "Tento řádek je zapsán do dočasného souboru."); // Zápis do dočasného souboru
fseek($myfile, 0); // Nastavení ukazatele souboru
echo fread($myfile, 1024); // výstup obsahu souboru
?>

4) Musíte určit počet řádků v souboru. K tomu použijeme funkci počítat()

$fp = soubor("counter.txt");
echo "Počet řádků v souboru: ".count($fp);
?>

5) Musíme použít mechanismus zamykání souborů

$fp = fopen("counter.txt", "a");
flock($fp, LOCK_EX); // Uzamčení souboru pro zápis
fwrite($fp, "Řádek pro zápis");
flock($fp, LOCK_UN); // Odemknout
fclose($fp);
?>

6) Potřebujeme ze souboru odstranit určitý řádek

$num_stroka = 5; //Odstranit řádek 5 ze souboru
$soubor = soubor("counter.txt"); // Přečte celý soubor do pole

for($i = 0; $i< sizeof($file); $i++)
if($i == $num_stroka) unset($file[$i]);

$fp = fopen("counter.txt", "w");
fputs($fp, implode("", $soubor));
fclose($fp);
?>

7) Určení typu souboru. Pomocí funkce

Pokud se učíte pracovat s PHP sami, pak je důležité naučit se číst data ze souboru a provádět v nich změny. Záznam do souboru php se provádí pro vývoj webových aplikací, změny informací o serveru a spouštění externích programů a inkluzí.

Jak pracovat se soubory php

Pokud má soubor takovou příponu, znamená to, že obsahuje programový kód napsaný ve stejnojmenném programovacím jazyce. Abyste mohli provést změny, budete si muset do počítače nainstalovat jeden ze softwarových editorů:

PHP Expert Editor;
. Dreamweaver;
. Vývoj Eclipse PHP;
. PHPEdit.

Pokud vytváříte web, pak musíte často používat identické návrhy, které se pohodlně uloží jako šablony do jiného souboru. K tomu je lepší použít include. Po zadání této funkce je potřeba do php souboru napsat název a příponu připojení, např. include 1.php. Tento návrh podporuje vícenásobné čtení obsaženého souboru a další funkcí je kontinuita spouštění kódu v případě chyby. Pokud se něco pokazí, bude kód pokračovat v provádění z nového řádku.
Tímto způsobem zahrnete soubor do svého kódu. Dalším způsobem je zadání požadavku. Na rozdíl od výše popsaného zahrnutí je soubor zahrnut před spuštěním programového kódu, ale můžete k němu přistupovat pouze jednou.

Ověření souboru

Před zápisem do souboru php se musíte ujistit, že existuje, a poté jej otevřít a provést potřebné úpravy. Chcete-li to provést, můžete použít funkci file_exists(), pokud potvrdí přítomnost, pak bude v okně editoru vrácena odpověď TRUE, jinak - FALSE.
Další funkce is_file() vás může upozornit, že je možné zapisovat data do php souboru. Je spolehlivější než file_exits a většina programátorů pro začátek používá is_file. Jakmile ověříte, že soubor existuje, můžete s ním začít pracovat.

Provádění změn v souboru

První nástroj, který můžete použít k provádění změn v souboru, je fwrite(). Píše řádky s následující syntaxí:

Int - manipulátor;
. Řetězec je proměnná.

Existuje další podobná funkce - fputs(), což je alias. Mezi těmito nástroji nejsou žádné rozdíly, můžete si vybrat jeden nebo druhý. U studentů je běžnější fwrite, zatímco cviční programátoři nejčastěji používají fputs.

Pro vytvoření PHP vstupu do textového souboru musí být splněna jedna důležitá podmínka – musí být otevřený pro úpravy. Tento soubor musí být umístěn ve složce s oprávněním k zápisu.

Chcete-li pracovat, zkuste nejprve otevřít textový dokument v programu a poté provádět úpravy pomocí běžných nástrojů.

// Otevření textového souboru
$f = fopen("text.txt", "w");
// Napište řetězec textu
fwrite($f, "Dobrý den! Dobrý den!");
// Zavře textový soubor
fclose($f);

V tomto příkladu je text.txt název dokumentu. Můžete to nazvat jinak: „Ahoj! Dobrý den! - příklad textu, může být zcela libovolný. Všechny změny se automaticky uloží do otevřeného souboru.

Všimněte si, že PHP je obecný účel. Intenzivně se využívá k tvorbě webových aplikací. Toto řešení podporuje většina poskytovatelů hostingu. Mluvíme o lídrovi mezi nástroji, které se používají k tvorbě webových stránek. Nyní víte, jak zapisovat do souboru php.

PHP - Práce se soubory

Každý programátor by měl umět správně pracovat se soubory. Tento článek je zaměřen na začínající PHP programátory, ale „sbírka receptů“ bude užitečná i pro pokročilé uživatele.

Práce se soubory je rozdělena do 3 fází:

  • Otevření souboru.
  • Manipulace s daty.
  • Zavírání souboru.

I. Otevření souboru

Chcete-li otevřít soubor v PHP, použijte funkci fopen(). Požadované parametry pro tuto funkci jsou název souboru a režim souboru.

Podle dokumentace PHP se rozlišují následující typy režimů souborů:

  • r – otevřít soubor pouze pro čtení.
  • r+ - otevře soubor pro čtení a zápis současně.
  • w – vytvoří nový prázdný soubor. Pokud takový soubor v době volání již existuje, je zničen.
  • w+ - podobně jako r+, pouze pokud soubor v době volání existuje, jeho obsah je smazán.
  • a – otevře existující soubor v režimu zápisu s ukazatelem posunutým na poslední bajt souboru (na konec souboru).
  • a+ - otevře soubor v režimu čtení i zápisu, s ukazatelem posunutým na poslední bajt souboru (na konec souboru). Obsah souboru se nesmaže.

Poznámka: Na konci libovolného řádku může být ještě jeden volitelný parametr: b nebo t. Pokud je zadáno b, soubor se otevře v binárním režimu čtení/zápisu. Pokud t, pak je pro soubor nastaven režim překladu posunu řádků, tzn. je vnímána jako textová.

Chcete-li demonstrovat, zvažte následující scénář:

//Otevře soubor v různých režimech

$fp = fopen("counter.txt", "r"); // Binární režim

$fp = fopen("counter.txt", "rt"); // Textový režim

$fp = fopen("http://www.yandex.ru", "r");// Otevře připojení HTTP pro čtení

$fp = fopen("ftp://user: [e-mail chráněný]", "w"); //Otevře připojení FTP s uvedením přihlašovacího jména a hesla

II. Manipulace s daty souborů

Data do souboru můžete zapisovat pomocí PHP pomocí funkce fwrite(). Tato funkce má 2 požadované parametry a 1 volitelný. Požadované parametry jsou deskriptor souboru a režim souboru:

$fp = fopen("counter.txt", "a"); // Otevřete soubor v režimu nahrávání

$mytext = "Musíme napsat tento řádek\r\n"; // Zdrojový řetězec

$test = fwrite($fp, $mytext); // Zápis do souboru

Pokud ($test)

Echo "Data byla úspěšně vložena do souboru.";

Jiný

Echo "Chyba při zápisu do souboru.";

Fclose($fp); //Zavřete soubor

Chcete-li číst soubor řádek po řádku, použijte funkci fgets(). Funkce má 2 požadované parametry:

Pokud ($fp)

Zatímco (!feof($fp))

$mytext = fgets($fp, 999);

Echo $mytext."
";

Jiný

Fclose($fp);

Poznámka: V tomto příkladu hodnota 999 určuje počet znaků, které budou načteny, dokud ukazatel nedosáhne konce souboru (EOF).

Echo readfile("counter.txt");

Můžete také použít funkci fpassthru(), která přebírá 1 požadovaný parametr. Před použitím této funkce musíte soubor otevřít v režimu čtení. Po dokončení čtení souboru funkce automaticky soubor zavře (a deskriptor souboru se stane neplatným).

$fp = fopen("counter.txt", "r"); // Otevřete soubor v režimu čtení

Pokud ($fp)

Echo fpassthru($fp);

Jiný

Echo "Chyba při otevírání souboru";

Velmi často nastávají situace, kdy je potřeba načíst obsah webu do pole. Tato funkce zahrnuje použití funkce file(). Při volání této funkce bude každý řádek souboru uložen v samostatném prvku zadaného pole.

Poznámka: Funkce file() by se neměla používat na binární soubory (binary-safe). Není bezpečný z hlediska čtení binárních souborů a pokud někde narazí na znak konce souboru (EOF), nezaručuje, že přečtete celý binární soubor.

$file_array = soubor("counter.txt"); // Načtení souboru do $file_array

// Práce s daty pole

Poznámka: Práce s poli je podrobně popsána zde, autoři: Mukhametshin D.F., Simdyanov I.V.

Na konci článku najdete dobrý „receptář“ o polích, který nabízí řešení mnoha problémů, se kterými se webový programátor denně setkává.

Představme si situaci, kdy je potřeba číst soubor znak po znaku. K tomu můžeme použít funkci fgetc(). Funkce přebírá jeden parametr. Funkce je užitečná, pokud potřebujeme najít libovolný znak nebo počet stejných znaků.

$fp = fopen("counter.txt", "r"); // Otevřete soubor v režimu čtení

Pokud ($fp)

Zatímco(!feof($fp))

$char = fgetc($fp);

If ($char == "c")

$i = $i + 1;// Najděte symbol „c“

Echo "Počet písmen 'c' v souboru: ". $i;

Jinak echo "Chyba při otevírání souboru";

III. Zavření souboru

Soubor je uzavřen pomocí funkce fclose(), která přebírá 1 požadovaný parametr.

$fp = fopen("counter.txt", "r");

Pokud ($fp)

Echo "Soubor otevřít";

Fclose($fp); // Zavření souboru

Sbírka receptů

1) Musíme zkontrolovat, zda ten či onen soubor existuje. K tomu použijeme funkci file_exists().

myfile("counter.txt"); // Použijte funkci myfile a předejte název souboru jako argument

function myfile($name) //Vytvoří funkci pro kontrolu existence souboru

If (file_exists($name)) echo "Soubor existuje";

Poznámka: Funkce file_exists nekontroluje soubory na vzdáleném webovém serveru. Aby funkce fungovala správně, musí být soubor se skriptem umístěn na stejném serveru jako kontrolovaný soubor.

2) Určete velikost souboru pomocí funkce fileize().

myfile("counter.txt");

//Vytvořte funkci pro kontrolu existence souboru a určení velikosti souboru

function myfile($name)

If (file_exists($name)) echo "Velikost souboru: ".filesize($name)." bytes";

Jinak echo "Soubor neexistuje";

3) Vytvořte dočasný soubor pomocí funkce tmpfile().

$myfile = tmpfile();

// Zápis do dočasného souboru

Fwrite($myfile, "Tento řádek je zapsán do dočasného souboru.");

Fseek($myfile, 0); // Nastavení ukazatele souboru

Echo fread($myfile, 1024); // výstup obsahu souboru

4) Musíte určit počet řádků v souboru. K tomu použijeme funkci count().

$fp = soubor("counter.txt");

Echo "Počet řádků v souboru: ".count($fp);

5) Musíme použít mechanismus zamykání souborů

$fp = fopen("counter.txt", "a");

Flock($fp, LOCK_EX); // Uzamčení souboru pro zápis

Fwrite($fp, "Řetězec pro zápis");

Flock($fp, LOCK_UN); // Odemknout

Fclose($fp);

6) Potřebujeme ze souboru odstranit určitý řádek

$num_stroka = 5; //Odstranit řádek 5 ze souboru

$soubor = soubor("counter.txt"); // Přečte celý soubor do pole

For($i = 0; $i< sizeof($file); $i++)

If($i == $num_stroka) unset($file[$i]);

$fp = fopen("counter.txt", "w");

Fputs($fp, implode("", $soubor));

Fclose($fp);

7) Určení typu souboru. Používáme funkci filetype(), která přebírá jeden parametr

$mytype = filetype("counter.txt");

Echo "Typ souboru: ".$mytype;

Po volání může řetězec obsahovat jednu z následujících hodnot:

soubor – běžný soubor

dir – adresář

fifo – kanál fifo

blok – blokově orientované zařízení

char – znakově orientované zařízení

neznámý – neznámý typ souboru

8) Pokud chcete zobrazit všechny parametry souboru, měli byste použít funkci stat().

$filename = stat("counter.txt");

Echo"

";

Print_r($název souboru);

Echo"

";

9) Potřebujeme vyčistit soubor, použít funkci ftruncate().

$fp = fopen("counter.txt", "a"); //Otevřete soubor v režimu nahrávání

Ftruncate($fp, 0) // vymazání souboru

10) Potřebujeme zjistit datum poslední úpravy souboru, použijeme funkci filectime(). Funkce vrací časovou hodnotu ve formě časového razítka Unixu.

Echo filectime("counter.txt");

A teď bude poměrně velká, ale nijak složitá lekce o práci se soubory v PHP. Za prvé, k čemu jsou soubory? Koneckonců, můžete vše uložit do MySQL nebo PostgreSQL nebo jakékoli jiné databáze. Někdy se však vyskytnou úkoly, kdy není vhodné používat databázi se vším tím zpracováním a starostí o zabezpečení připojení. Potřebujeme například vytvořit běžné počítadlo, ale předtím jsme v projektu nepoužívali databázi. Měli bychom tedy kvůli jednomu malému počítadlu vytvořit databázi a uložit do ní jen pár řádků? Zde je mnohem jednodušší používat soubory. Navíc někdy hosting databáze vůbec nepodporuje, pak jsou soubory obecně jedinou možností.

No, řekněme, že jsem vás přesvědčil, že soubory jsou nezbytné :) Nyní pojďme přijít na to, jak s nimi pracovat. Jak vytvářet, otevírat, zapisovat, přepisovat, číst a tak dále. První věci.

Vytvořte soubor

PHP používá k otevírání souborů funkci fopen. Může však také vytvářet soubory. Pokud předáte fopen název souboru, který neexistuje, vytvoří jej.

Samotná funkce fopen má dva parametry, z nichž oba jsou povinné. Nejprve musíme zadat název souboru, který chceme otevřít. Za druhé předejte parametr, který funkci řekne, co s tímto souborem plánujeme udělat (například čtení ze souboru, zápis atd.).

Pokud potřebujeme vytvořit soubor, tak zadáme jeho jméno a předáme parametr, že do něj chceme zapisovat data. Poznámka: Musíme PHP sdělit, co do souboru zapisujeme, jinak nevytvoří nový soubor.

Příklad:

$ourFileName = "testFile.txt";

$ourFileHandle = fopen($ourFileName, "w") or die("nelze otevřít soubor");

fclose($ourFileHandle);

První řádek $ourFileName = testFile.txt vytvoří řetězcovou proměnnou, do které uložíme název souboru.

Druhý řádek $ourFileHandle = fopen($ourFileName, ‘w’) nebo die(“nelze otevřít soubor”) vytváří nebo otevře existující soubor pro zápis. Nebo vrátí zprávu, že soubor nelze otevřít.

Třetí řádek fclose($ourFileHandle) zavře soubor. Je to vlastně jednoduché.

Možnosti otevření souboru v php

První parametr 'r' (čtení) - otevře soubor pouze pro čtení, nelze do něj zapisovat.

Druhý parametr ‚w‘ (write) – otevře se pro zápis. V tomto případě bude záznam vždy probíhat od začátku souboru. Pokud tam již nějaké informace jsou, budou přepsány.

Třetí parametr 'a' (append) - otevře soubor pro zápis, ale na rozdíl od w se připojí na konec souboru.

Pokročilé možnosti:

Parametr 'r+' - otevře se pro čtení i zápis. Ukazatel bude na začátku souboru.

Parametr 'w+' - otevře se pro čtení i zápis, ALE smaže všechny informace, které byly v souboru!!!

parametr 'a+' - otevře se pro čtení a zápis, ale ukazatel bude na konci souboru.

Přirozeně lze funkci předat pouze jeden z těchto parametrů, nikoli několik. Je třeba je nahradit „X“:

fopen($ourFileName, "X")

Zapsat do souboru

Nyní jsme otevřeli soubor, vybrali parametr, který potřebujeme, co dál? Musíte do něj něco napsat. Jak to udělat? Pomocí funkce fwrite, která bere jako parametry ukazatel na soubor a řádek textu, který chceme napsat. Příklad:

$myFile = "testFile.txt";

$fh = fopen($myFile, "w") or die("nelze otevřít soubor");

$stringData = "První řádek";

fwrite($fh, $stringData);

$stringData = "Druhý řádek";

fwrite($fh, $stringData);

Vytvořili jsme soubor testFile.txt, ukazatel na něj je uložen v proměnné $fn. Do něj jsme napsali řádek „První řádek“ (na konci jsme použili symbol konce řádku n) a poté „Druhý řádek“. Poté složku uzavřeli.

POZOR! Nikdy nezapomeňte zavřít své soubory! V opačném případě, pokud se provádění skriptu ukončí abnormálně, data v souborech nebudou uložena! Po práci vždy používejte fclose!!!

Čtení ze souboru

Napsali jsme to, teď si to přečteme! Ani to není tak těžké. Používáme funkci fread. Jako vstup mu dáme ukazatel na soubor a počet bajtů, které chceme číst. Například jeden znak se rovná jednomu bytu (v závislosti na kódování), chceme přečíst 5 znaků: $theData = fread($fh, 5).

Pokud ale potřebujeme získat všechny informace, které jsou v souboru, pak potřebujeme funkci filesize, která vrací počet bajtů v souboru, takže pokud je výsledek funkce filesize předán freadu, pak dostaneme všechny informace ze souboru:

$myFile = "testFile.txt";

$fh = fopen($myFile, "r");

$theData = fread($fh, velikost souboru($myFile));

Doufám, že jsem to vysvětlil jasně.

$myFile = "testFile.txt";

$fh = fopen($myFile, "r");

$theData = fgets($fh);

V důsledku toho získáme první řádek ze souboru testFile.txt. V souladu s tím, abyste prošli všechny řádky, musíte použít smyčku foreach:

$lines = soubor("testFile.txt");

foreach($lines jako $single_line)

echo $single_line . "
n";

Nyní jste se naučili, jak otevírat soubory pro čtení, zápis nebo obojí. Zapisujte do nich data nebo je přidávejte navrch pomocí Append a také z nich čtěte informace.

Poslední aktualizace: 1.11.2015

Jako většina programovacích jazyků i PHP podporuje práci se soubory, které jsou jedním ze způsobů ukládání informací.

Čtení a zápis souborů

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

Pro otevírání souborů v PHP je definována funkce fopen(). Má následující definici: resource fopen(řetězec $název_souboru, řetězec $režim) . První parametr $filename představuje cestu k souboru a druhý je režim otevírání. V závislosti na účelu otevření a typu souboru může tento parametr nabývat následujících hodnot:

    "r" : Soubor je otevřen pouze pro čtení. Pokud soubor neexistuje, vrátí hodnotu false

    "r+" : Soubor je otevřen pouze pro čtení a lze do něj zapisovat. Pokud soubor neexistuje, vrátí hodnotu false

    "w" : Soubor je otevřen pro zápis. Pokud takový soubor již existuje, pak je přepsán, pokud ne, pak je vytvořen.

    "w+" : Soubor je otevřen pro zápis a je čitelný. Pokud takový soubor již existuje, pak je přepsán, pokud ne, pak je vytvořen.

    "a" : Soubor je otevřen pro zápis. Pokud takový soubor již existuje, pak se data zapíší na konec souboru a stará data zůstanou. Pokud soubor neexistuje, je vytvořen

    "a+" : Soubor je otevřen pro čtení a zápis. Pokud soubor již existuje, pak se data připojí na konec souboru. Pokud soubor neexistuje, je vytvořen

Výstupem funkce fopen bude deskriptor souboru. Tento popisovač se používá pro operace se soubory a pro zavření souboru.

Po dokončení práce je třeba soubor zavřít pomocí funkce fclose(), která jako parametr přebírá deskriptor souboru. Například otevřeme a zavřeme soubor:

$fd = fopen("form.php", "r") or die("soubor nelze otevřít"); fclose($fd);

Konstrukce or die("text chyby") umožňuje skriptu zastavit běh a zobrazit nějaké chybové hlášení, pokud funkce fopen nemohla soubor otevřít.

Čtení souboru

Ke čtení souboru můžete použít několik funkcí. Pro čtení po řádcích se používá funkce fgets(), která přijímá deskriptor souboru a vrací jeden přečtený řádek. Pojďme si projít celý soubor řádek po řádku:

Pokaždé, když je zavoláno fgets(), PHP umístí ukazatel na konec čteného řádku. Ke sledování konce souboru se používá funkce feof(), která po dokončení souboru vrátí hodnotu true. A dokud není dosaženo konce souboru, můžeme použít funkci fgets().

Čtení celého souboru

V tomto případě nemusíme explicitně otevřít soubor, získat popisovač a pak soubor zavřít.

Blokovat čtení

Můžete také provádět čtení blok po bloku, to znamená číst určitý počet bajtů ze souboru pomocí funkce fread():

Funkce fread() má dva parametry: popisovač souboru ke čtení a počet bajtů ke čtení. Při čtení bloku se ukazatel v souboru přesune na konec tohoto bloku. A také pomocí funkce feof() můžete sledovat dokončení souboru.

Napište soubor

Chcete-li zapsat soubor, použijte funkci fwrite(), která do souboru zapíše následující řádek:

Další funkce fputs() funguje podobně:

Práce s ukazatelem souboru

Při otevírání souboru pro čtení nebo zápis v režimu "w" je ukazatel v souboru umístěn na začátek. Při čtení dat PHP přesune ukazatel v souboru na konec bloku načtených dat. Můžeme však také ručně manipulovat s ukazatelem v souboru a nastavit jej na libovolné místo. Chcete-li to provést, musíte použít funkci fhledat, který má následující formální definici:

Int fseek (zdroj $handle , int $offset [, int $whence = SEEK_SET ])

Parametr $handle představuje popisovač souboru. Parametr $offset je posun v bajtech vzhledem k začátku souboru, od kterého začne čtení/zápis. Třetí volitelný parametr určuje, jak se nastavuje posun. Může nabývat tří hodnot:

    SEEK_SET : výchozí hodnota, nastavuje offset v offsetových bajtech vzhledem k začátku souboru

    SEEK_CUR : nastavuje offset v offsetových bajtech vzhledem k začátku aktuální pozice v souboru

    SEEK_END : nastaví posun na posunutí bajtů od konce souboru

Pokud je ukazatel úspěšně nainstalován, funkce fseek() vrátí 0, a pokud je ukazatel neúspěšný, vrátí hodnotu -1.

Příklad použití funkce:

$fd = fopen("ahoj.txt", "w+") or die("soubor nelze otevřít"); $str = "Ahoj světe!"; // řádek pro zápis fwrite($fd, $str); // zapíše řádek na začátek fseek($fd, 0); // umístěte ukazatel na soubor na začátek fwrite($fd, "Oink"); // napište řádek na začátek fseek($fd, 0, SEEK_END); // umístěte ukazatel na konec fwrite($fd, $str); // napište další řádek na konec fclose($fd);




Nahoru