Databáze MySQL a Access se stále častěji stávajípřístupné prostředky pro ukládání dat. Na počátku devadesátých let však bylo populární pracovat se soubory v PHP, ukládat záznamy ve formátech textových souborů ve formátu CSV, oddělené novými řádky.
Databáze jsou vhodné, ale každý vývojář by mělalespoň základní znalosti o čtení a zápisu souborů. Možná mnozí se zamyslí nad otázkou: "Proč potřebuji to vědět?" Pokud používám soubory, jsou napsány ve formátu XML a právě používám parser. "
Zde je několik důvodů, proč byste mohli potřebovat soubory:
Čtení souborů a psaní jsou základní operace.Pokud si přejete dokument přečíst, musíte ho nejprve otevřít. Poté přečtěte co nejvíce obsahu, pak zavřete soubor. Chcete-li psát informace do dokumentu, musíte ji nejprve otevřít (nebo jej vytvořit, pokud ještě není vytvořen). Poté zaznamenejte potřebná data a zavřete je na konci.
Je také vhodné používat vestavěné funkce, které se automaticky otevírají a zavírají. Jsou k dispozici v PHP 5. Měli byste se také seznámit s atributy souborů, tedy se svými vlastnostmi.
Mohou říci:
Nejlepší je naučit se všechny základní atributy pro práci se soubory v PHP. To značně usnadní práci.
Možná budete muset znát čas poslední úpravy souboru. V tomto případě se funkce zachrání: fileatime (), filemtime () a filectime ().
Zde kód načte časové razítko posledního přístupu a zobrazí ho:
Funkce filectime () zobrazuje čas změny různých informací souvisejících se souborem (například přístupová práva) a filemtime () - změní samotný soubor.
Funkce date () byla použita k formátování časové značky Unix vrácené funkcí file * time ().
Chcete-li zjistit, zda skutečně funguje se soubory v PHP, můžete použít funkci is_file () nebo is_dir (), abyste zjistili, zda je adresář.
php
echo $ file. (is_file ($ file)? ":" ne "). "soubor.";
echo $ file. (is_dir ($ file)? ":" ne "). "adresář.";
Příklad kódového výstupu:
Můžete se tak vyhnout chybám a ne otevírat omylem "ne soubor". V PHP je práce se soubory a adresáři podobná.
Než začnete pracovat se souborem, můžete zkontrolovat, zda je čitelný nebo zapisovatelný. Chcete-li to provést, použijte funkce is_writable () a is_readable ().
php
echo $ file. (is_readable ($ file)? ":" ne "). "číst.";
echo $ file. (is_writable ($ file)? ":" ne "). "je zaznamenána.";
Tyto funkce vrátí Booleovu hodnotu a vysvětlují, zda lze operaci provést v souboru.
Kód zobrazuje na obrazovce následující hodnoty:
Pomocí trojího operátora můžete určit, zda je soubor dostupný nebo ne.
Chcete-li zjistit velikost souboru, musíte použít funkci velikost souboru (). Bude zobrazen v bajtech.
php
$ file = "C: Windowsfile.ini"; $ size = velikost souboru ($ soubor);
echo $ file. "má velikost". $ velikost. "byte.";
Funkce zobrazí následující:
Zde použijte soubor v systému Windowszdůrazňuje jednu nuanci. Zpětné lomítko má zvláštní význam jako znak útěku. Bude nutné se tomu vyhnout přidáním dalšího zpětného lomítka.
Pokud soubor ještě není vytvořen, funkce file size () bude ukazovat na hodnotu False a chybu. Proto nejprve zkontrolujte soubor pro existenci nezbytného příkazu file_exists ().
php
$ file = "C: Windowsfile.ini", pokud (file_exists ($ file)) {$ size = velikost souboru ($ file);
echo $ file. "má velikost". $ velikost. "byte.";} else {echo $ file. "soubor nebyl nalezen.";}
Soubor file_exists () by měl být téměř vždy zkontrolován z důvodu zabezpečení.
Předchozí část ukazuje, kolik můžetedozvíte se o souborech, se kterými pracujete, než začnete číst nebo psát. Nyní můžete rozebrat způsob, kterým budete číst obsah souboru.
Funkce pro práci s soubory PHP usnadňují práci.V takovém případě budete potřebovat file_get_contents (). Přečte celý obsah souboru do proměnné bez nutnosti otevřít nebo zavřít samotný soubor. To je výhodné, když je hlasitost záznamu poměrně malá, protože okamžité čtení 1 GB dat do archivu není v PHP vždy racionální. Práce s soubory ".ini" a funkce file_get_contents () jsou uvedeny níže.
php
$ file = "c: windowsfile.ini"; $ file1 = file_get_contents ($ soubor);
echo $ file1;
U velkých souborů nebo jen v závislosti napotřebám vašeho scénáře, může být mnohem moudřejší, kdybyste sami zpracovávali jednotlivé součásti. To je způsobeno skutečností, že jakmile je soubor otevřen, můžete v něm vyhledat konkrétní poznámku a číst tolik dat, kolik chcete. Funkce fopen () se používá k otevření souboru.
php
$ file = "c: windowsfile.ini"; $ file1 = fopen ($ soubor, "r");
Pro práci s funkcí fopen () jsou vyžadovány dva argumenty:
Funkce vrací handle nebo stream do souboru, který je uložen v proměnné $ file1. Měla by být použita ve všech dalších povelích při práci se souborem.
Režim | Význam | Poloha kurzoru | Pokud soubor neexistuje? |
str | pouze pro čtení | spuštění souboru | bude chybět |
in | pouze záznam | spuštění souboru | vytvoří nový |
a | pouze záznam | konec souboru | vytvoří nový |
Chcete-li číst z otevřeného souboru jeden řádek najednou, můžete použít funkci fgets ().
php
$ file = "c: windowsfile.ini"; $ file1 = fopen ($ soubor, "r");
do {echo fgets ($ file1). "
";}
zatímco (! feof ($ file1));
fclose ($ soubor1);
Использование do-while-цикла является хорошим možnost předem vědět, kolik řádků je v souboru. Funkce feof () kontroluje, zda soubor dosáhl dokončení a cyklus pokračuje až do konce stavu souboru. Po dokončení přečtení se funkce fclose () použije k zavření dokumentu.
Dva běžně používané režimy při zápisu do souboru spomocí funkce fwrite (): "w" a "a". "W" znamená, že je třeba napsat do dokumentu, ale nejprve odstranit veškerý obsah, "a" - přidá nová data k tomu, co již v souboru existuje. Musíte být jisti, že je použita správná verze.
Následující příklad použije režim "a" pro nahrávání.
php
$ myFile = "files.txt"; $ file1 = fopen ($ myFile, "a");
$ výstup = "banán". PHP_EOL; fwrite ($ soubor1, $ výstup);
$ output = "Čína". PHP_EOL;
fwrite ($ soubor1, $ výstup);
fclose ($ soubor1);
Nejprve je název souboru přiřazen proměnnéOtevře se v režimu "a" a přidá se. Data, která mají být zapsána, jsou přiřazena proměnné $ output a fwrite () a informace jsou přidány do souboru. Proces se opakuje a přidá se další řádek, pak se dokument uzavře pomocí fclose ().
Předdefinovaná konstanta PHP_EOL přidává nový znak specifický pro platformu, na níž PHP pracuje s textovými soubory.
Obsah souboru po provedení výše uvedeného kódu by měl vypadat takto:
Funkce file_put_contents () může takézapisovat do souboru. Vezme název souboru, data, která mají být zapsána, a konstanta FILE_APPEND, pokud má být přidána data (implicitně přepsá obsah souboru).
Zde je stejný příklad jako výše, ale tentokrát pomocí file_put_contents ().
php
$ myFile = "soubor.txt";
file_put_contents ($ myFile, banán, PHP_EOL);
file_put_contents ($ myFile, "Čína", PHP_EOL, FILE_APPEND);
Musíte s těmito funkcemi často pracovat, takže je lepší si je pamatovat. Kromě toho mohou při práci s soubory PHP jednou usnadnit složité úkoly.