![php-logo[1]](http://www.womap.4fan.cz/wp-content/uploads/2012/06/php-logo1-150x79.png)
Dnes, když umíme podmínky, proměnné atd. si ukážeme jak pomocí PHP pracovat se soubory.
Kontrola existence souboru
Pokud budeme se souborem manipulovat, měli bychom nejprve zjistit, zda soubor existuje.
<?php
$soubor = "slozka/nazev_souboru.pripona";
if(!file_exists($soubor)) {
echo "Soubor neexistuje";
}
?>
Vysvětlovat začnu odshora, takže: do proměnné soubor jsme uložili cestu k souboru, včetně přípony…Nyní k podmínce. Pro kontrolu podmínky jsme použili funkci file_exists, před kterou jsme dali vykřičník, čímž jsme vlastně obrátili hodnotu funkce. Tudíž, pokud by nám funkce file_exists vyhodila hodnotu 1, po použití vykřičníku by to bylo 0… Samotná funkce file_exists kontroluje, zda soubor existuje. Má jeden parametr a sice název souboru, jehož existenci kontrolujeme. Pokud je soubor v jiné složce, tak k němu musí být uveden také cesta…
Manipulace se soubory a jejich obsahem
Nyní, když máme existenci souboru jistou, můžeme se souborem manipulovat, měnit jeho obsah… Abychom mohli změnit obsah souboru, musíme si jej prvni „otevřít“, a to funkcí fopen.
fopen(soubor, režim)
Výše jsem napsal zápis funkce fopen a její parametry. Je jich samozřejmě více, ale tyhle budete používat nejčastěji. Parametr soubor je pravděpodobně jasný. Opět vložíte název souboru, popř. adresu k němu. Parametr režim nám udává, v jakém režimu budeme se souborem manipulovat. Rozlišujeme tyto režimy:
r | otevření souboru pouze pro čtení; pokud soubor neexistuje, dojde k chybě |
r+ | otevření souboru pro čtení; je možné do souboru také zapisovat; dojde k chybě, pokud soubor neexistuje |
w | otevření soubor pro zápis; pokud soubor neexistuje, je vytvořen; existuje-li, je jeho obsah nejdříve smazán |
w+ | otevření souboru pro zápis, přičemž je možno z něj i číst; neexistující soubor je vytvořen, pokud již soubor existuje, je smazán |
a | otevření souboru pro zápis za konec souboru (existující soubor není smazán); pokud soubor neexistuje, PHP se jej pokusí vytvořit |
a+ | otevření souboru pro zápis za konec souboru, přičemž je možno z něj i číst; pokud soubor neexistuje, pokusí se jej PHP vytvořit |
Takže tohle byly režimy otevření souboru. Příklad zápisu funkce fopen:
$fp = fopen ("dokumenty/text.txt", "w+");
Proč jsem hodnotu funkce fopen uložil do proměnné? K tomu se dostanu níže. Nyní ještě k výše zmíněnému zápisu – takže funkcí fopen otevíráme soubor text.txt, který je ve složce dokumenty, která je ve stejné složce jako náš php soubor. Dále jako parametr funkce následuje w+, tudíž se soubor otevře, budu z něj moct číst a budu do něj moct také zapisovat… pokud soubor neexistuje, je vytvořen, pokud existuje, je smazán.
Zisk dat ze souboru
Pro zisk dat ze souboru se často užívá funkce fread, u které opět zmíním 2 parametry. První je jako vždy odkaz na samotný soubor, druhý udává, kolik dat se má ze souboru přečíst – např. 4kb, 1024b,…. zápis funkce fread:
fread (soubor, velikost)
Zápis snad není potřeba komentovat, jen pro jistotu – velikost = velikost části, kterou chceme číst. Pokud chcete zajistit, aby se soubor přečetl celý, můžeme jako parametr velikost uvést toto: filesize(soubor) – funkce filesize nám zjistí velikost souboru, takže vlastně zjistíme celkovou veliksot souboru, který čteme a tuto hodnotu pak vložíme do paramteru funkce fread. Příklad funkce fread:
<?php
$soubor = "text.txt";
$fp = fopen($soubor, "a");
$text = fread($fp, filesize($soubor));
echo $text;
?>
Takže, co tenhle kód dělá? Jako první si definujem proměnnou soubor, do které vložíme název, popř. cestu k souboru. Dále si do proměnné fp uložíme hodnotu funkce fopen, pomocí které jsme si otevřeli soubor. Nyní voláme funkce fread, jejíž hodnotu si uložíme do proměnné text a tu pak následně vypíšeme. Myslím, že s tímto problém nebude a proto se přesuneme k zápisu dat do souboru.
Zápis dat do souboru
V PHP nemusíme ze souborů jen číst, ale můžeme do nich také vkládat obsah, a to většinou pomocí funkce fwrite. Jak už jistě tušíte, její 2 nejdůležitější parametry jsou soubor, do kterého budeme zapisovat a poté řetězec, který budeme zapisovat. Všechny funkce jsou obdobné a proto už jen funkci uvede na příkladu.
<?php
$soubor = "text.txt";
$fp = fopen($soubor, "a");
$text = "Ahoj, toto je pokusný text, který bude vložen do souboru text.txt";
fwrite ($fp, $text);
?>
Opět, do proměnné soubor jsme si definovali soubor, do nějž budeme vkládat řetězec, poté jsme jej otevřeli, definovali si proměnnou text, ve které je uložen text, který chceme vložit a nakonec zavolali funkci fwrite, která řetězec do souboru vložila.
Uzavření souboru
Když do souboru zapíšeme data, nebo z něj vydolujeme to, co potřebujeme, je dobré soubor zavřít funkcí fclose. Příklad:
<?php
$soubor = "text.txt";
$fp = fopen ($soubor, "a");
//úkony, které chceme se souborem provádět
fclose($fp);
?>
Takže, to by bylo k souborům a práci s nimi pomocí PHP vše. Pokud máte dotazy, piště je do komentářů pod článek.