PHP - práce se soubory

PHP má vynikající možnosti pro manipulaci se soubory. Soubory můžete mazat, vytvářet, kopírovat, načítat atd.

Změna přístupových práv souboru

Pokud PHP skripty, které mění obsah některých souborů nepracují správně, je to často způsobeno špatným nastavením přístupových práv souboru. Atributy lze změnit pomocí Total Commanderu. Připojte se na FTP, vyberte soubor, u kterého chcete nastavit jiná přístupová práva. Pak klikněte na položku Soubory | Změna atributů a vepište do políčka "777". Tím povolíte veškerá práva (zejména zápis).

Vytvoření souboru

K vytvoření souboru stačí metoda fopen("soubor", "w+")

$soubor=fopen("soubor.txt", "w+")

Tímto způsobem otevřeme soubor soubor.txt. Hodnota w+ je režim otevírání souboru. Další použitelné hodnoty:

HodnotaPopis
aOtevře soubor pro přidání, pokud soubor neexistuje PHP jej vytvoří
a+Otevře soubor pro přidávání a čtení, pokud soubor neexistuje PHP jej vytvoří
rOtevře soubor pouze pro čtení
r+Otevře soubor pro čtení a zápis
wOtevře soubor pro zápis, původní data budou ztracena. Pokud soubor neexistuje PHP jej vytvoří
w+Otevře soubor pro zápis a čtení, původní data budou ztracena, pokud soubor neexistuje PHP jej vytvoří

Pokud chcete prostřednictvím PHP ukládat data do vybraných souborů na serveru, je třeba, aby tyto soubory měly nastavena práva pro zápis chmod 777. Například v Total Commanderu stačí vybrat soubor, který je na serveru a nastavit mu atributy pomocí Soubor | Změna atributů a tam zaškrtat potřebná políčka.

Otevření souboru

Otevření souboru se provádí stejnou funkcí jako vytvoření tj. fopen("soubor","režim").

$soubor=fopen("soubor.txt", "r");

Tímto jsme otevřeli soubor.txt pro čtení.

Zavření souboru

Po dokončení práce se souborem je rozumné jej zavřít pomocí metody fclose(id_souboru) id_souboru je hodnota vrácená metodou fopen(), příklad:

$soubor=fopen("soubor.txt", "r");
fclose($soubor);

Vypsání obsahu

Otevřeme soubor a vypíšeme jeho obsah pomocí metody fread(id_souboru, počet_znaků):

$soubor = fopen("soubor.txt", "r");
$text = fread($soubor, 10);
echo($text);
fclose($soubor);

Metoda fread() přečte ze souboru prvních 10 znaků. Obvykle je třeba načíst celý soubor, je tedy nutné zjistit počet jeho znaků. To lze pomocí metody filesize($soubor), která vrátí počet znaků vybraného souboru.

Uložení souboru

Nyní pomocí metody fwrite(id_souboru, "text") zapíšeme text na konec vybraného souboru:

$text = "cokoli, co chcete uložit do souboru";
$soubor = fopen("soubor.txt", "a+");
fwrite($soubor, $text);
fclose($soubor);

Soubor.txt může být existující soubor, pokud neexistuje PHP ho vytvoří.

Kopírování

Ke kopírování souborů slouží metoda copy(zdroj, cíl):

copy("http://www.tvorba-webu.cz/php/prace_se_soubory.php", "http://www.tvorba-webu.cz/prace_se_soubory.php");

Skript překopíruje tento soubor z této složky do kořenového adresáře webu.

Přejmenování

rename("původní název","nový název")

rename("soubor.txt", "soubor.html")

Převod textového souboru na soubor html.

Odstranění

Pro odstranění souboru se užívá metoda unlink(název souboru)

unlink("soubor.txt");

Struktura adresáře

Metodou opendir() můžete otevřít celý adresář (složku) a metodou readdir() ji přečíst. Těmito metodami např. můžete načíst názvy všech souboru ve vybraném adresáři:

$adresar = opendir(".");
while ($soubor = readdir($adresar)){
echo ($soubor."<br />");
}

Parametr "." označuje aktuální adresář a může být nahrazen obvyklou URL.

Atributy souborů

Atribut souboru je velikost, datum posledního přístupu, datum vytvoření atd. Velikost souboru zjišťuje metoda filesize($soubor):

$soubor = fopen("soubor.txt", "r");
echo(filesize($soubor));

Typ souboru zjišťujeme pomocí metody filetype($soubor):

$soubor = fopen("soubor.txt", "r");
echo(filetype($soubor));

Nejčastějším výsledkem je "dir" (složka) nebo "file" (soubor). Datum vytvoření souboru zjišťuje metoda filectime($soubor), která vrací číslo, které je možné upravit pomocí metod pro práci s časem:

$soubor = fopen("soubor.txt", "r");
$datum_vytvoreni = StrFTime("%d/%m/%Y %H:%M", filectime($soubor));

Metoda StrFTime formátuje datum a čas (zde do formátu 22/12/2007 12:23:11). Datum poslední změny zjišťuje metoda filemtime($soubor):

$soubor = fopen("soubor.txt", "r");
$datum_posledni_zmeny = StrFTime("%d/%m/%Y %H:%M", filemtime($soubor));

Počet souborů v adresáři

Skript, který spočítá počet souborů v adresáři (prakticky ho můžete uplatnit například, když budete automaticky počítat všechny články v zadaném adresáři):

<?php
function pocet($addr){
$adresar = opendir($addr);
$num=0;while ($soubor = readdir($adresar)){$num++;}
$num = $num-2;
echo '('.$num.')';
}
pocet("http://www.tvorba-webu.cz/php/");
?>

Skript postupně projede všechny soubory v adresáři, za každý přičte 1 k proměnné $num, pak od ní odečteme 2, protože počítá i "." a "..".

Další: PHP - řetězce



Doporučuji
Pro své weby používám *Webhosting C4: 20 GB prostoru, PHP, MySQL, e-maily, subdomény za 1200 Kč (zdarma 2 GB navíc každý rok). Více WebhostingC4.cz.
Potřebujete poradit?


Vyhledávání


Poradna

Pokud si nevíte rady, chcete kontakt na spolehlivého tvůrce webu, či vás zajímá cizí názor, ozvěte se.

Reklama