Jelenlegi hely

3.6.4. Fájlok tartalmának kezelése

PHP-ben a fájlkezelés logikája a hagyományos C (és nem a C++) nyelvre épül.

Az fopen függvényt fájlok megnyitására használjuk a PHP-ben. A függvény első paramétere tartalmazza a megnyitandó fájl nevét, a második azt határozza meg, hogy milyen módon nyissuk meg a fájlt.

<?php
  $file
=fopen("welcome.txt","r");
?>

A fontosabb megnyitási módok:

  • r: Csak olvasás. A fájl elején kezdődik.
  • w: Csak írás. Megnyitja és törli a fájl tartalmát; vagy egy új fájlt készít ha a fájl nem létezik.
  • a: Hozzáfűzés. Megnyitja a fájlt és a végére kezd írni; vagy egy új fájlt készít ha a fájl nem létezik.

Ha az fopen nem tudja megnyitni a fájlt, false-t ad vissza.

Az alábbi példa egy üzenetet ad vissza, ha az fopen nem tudja megnyitni a megadott fájlt:

<?php
  $file
=fopen("welcome.txt","r") or exit("Unable to open file!");
?>

A kód az or rövidzár kiértékelése (3.2.5 fejezet) miatt csak az fopen false visszaadott értéke esetén futtatja az exit függvényt.

A fájl bezárása

Az fclose függvényt fájlok bezárására használjuk. Illik – más erőforrásokhoz hasonlóan – a fájlokat a lehető legkorábban „elengedni”.

<?php
  $file
= fopen("test.txt","r");
 
//...
 
fclose($file);
?>

Fájlvég ellenőrzés

Az feof függvény ellenőrzi a „fájlvég” (EOF) elérését.

Az feof függvény hasznos ismeretlen hosszúságú állományon való munkánál.

<?php
if (feof($file)) echo "End of file";
?>

Fájl soronkénti beolvasása

Az fgets függvényt egy fájl egy sorának beolvasására használjuk. A függvény hívása után az ún. fájl mutató a következő sorra mutat.

Az alábbi példa sorról sorra beolvas egy fájlt, míg el nem éri annak végét:

<?php
$file
= fopen("welcome.txt", "r") or
    exit(
"Unable to open file!");
while(!
feof($file)) {
  echo
fgets($file). "<br>";
}
 
fclose($file);
?>

Fájl karakterenkénti beolvasása

Az fgetc függvény egy fájl egy karakterének beolvasására szolgál. A függvény hívása után a fájlmutató a következő karakterre mutat.

Az alábbi példa karakterenként olvas be egy fájlt, míg el nem éri annak végét.

<?php
$file
=fopen("welcome.txt","r") or exit("Unable to open file!");
while (!
feof($file)) {
  echo
fgetc($file);
}
fclose($file);
?>

CSV olvasás

<?php
$file
= fopen("contacts.csv","r");
while(!
feof($file)) {
 
print_r(fgetcsv($file));
}
fclose($file);
?>

CSV írás

<?php
$list
= array (
"Peter,Griffin,Oslo,Norway",
"Glenn,Quagmire,Oslo,Norway",
);
$file = fopen("contacts.csv","w");
foreach (
$list as $line) {
 
fputcsv($file,explode(',',$line));
}
fclose($file);
?>

Bináris fájlkezelés

PHP-ben viszonylag ritka a közvetlen bináris fájlkezelés, legtöbbször szöveges állományokkal dolgozunk. Amikor mégis szükség van rá, akkor pl. a GD Library-t használjuk képek létrehozására, manipulálására. (Pl. bélyegkép készítés, képek vízjelezése, stb.) Más feladatokra hasonló magasabb szintű megoldások léteznek.

Példaként nézzünk meg egy egyszerű képkonvertáló GD kódot:

<?php
$png_image
= imagecreatefrompng( "input.png" );
imagejpeg( $png_image, "output.jpg" );
imagedestroy( $png_image );
?>