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:
Hodnota | Popis |
---|---|
a | Otevř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ří |
r | Otevře soubor pouze pro čtení |
r+ | Otevře soubor pro čtení a zápis |
w | Otevř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
Vyhledávání
Základy
Rozšíření
Příklady
- PHP scripty
- Kniha návštěv
- Ochrana e-mailu
- Malé šablony
- Počítadlo návštěv
- Odeslání e-mailu
- Generování formuláře
- IP adresa
- RSS čtečka
- Heslo
- Zaheslování jedné stránky
- Ověření e-mailu
- Odstranění diakritiky
- Aktuální datum a čas
- Vypsání souboru
- Počet souborů v adresáři
- Vypsat název dne
- Vypsat název měsíce
Ostatní
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.