file în PHP

Citește un fișier întreg într-un tablou, câte o linie în fiecare element.

Sintaxă
file(string $filename, int $flags = 0, $context = null): array|false

Ce face file

file este varianta scurtă pentru citirea pe linii: un singur apel, fără fopen și buclă. Fiecare element păstrează implicit linia nouă de la final.

Opțiuni utile: FILE_IGNORE_NEW_LINES elimină \n de la final, iar FILE_SKIP_EMPTY_LINES sare peste liniile goale (funcționează doar împreună cu prima). Tot fișierul ajunge în memorie, deci pentru fișiere foarte mari folosește fgets.

Parametri

Parametru Descriere
$filename Calea fișierului sau o adresă web.
$flags Opțional. FILE_IGNORE_NEW_LINES, FILE_SKIP_EMPTY_LINES, FILE_USE_INCLUDE_PATH.
$context Opțional. Un context de stream.

Ce returnează

Un tablou cu liniile sau false la eroare.

Exemple

Exemplul 1: Liniile, cu și fără \n

<?php
file_put_contents("nume.txt", "Ana\nIon\nMaria\n");

var_dump(file("nume.txt")[0]);
var_dump(file("nume.txt", FILE_IGNORE_NEW_LINES)[0]);

Rezultat

string(4) "Ana
"
string(3) "Ana"

Exemplul 2: Fără linii goale

<?php
file_put_contents("emailuri.txt", "ana@exemplu.ro\n\nion@exemplu.ro\n\n");

$emailuri = file("emailuri.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
print_r($emailuri);

Rezultat

Array
(
    [0] => ana@exemplu.ro
    [1] => ion@exemplu.ro
)

Exemplul 3: Ultimele două linii dintr-un jurnal

<?php
file_put_contents("acces.log", "10:00 /\n10:01 /blog\n10:02 /contact\n10:03 /invata\n");

$ultimele = array_slice(file("acces.log", FILE_IGNORE_NEW_LINES), -2);
echo implode("\n", $ultimele);

Rezultat

10:02 /contact
10:03 /invata

Greșeli frecvente

  • Compari elementele cu un text fără FILE_IGNORE_NEW_LINES. "Ana\n" === "Ana" este false.
  • Folosești doar FILE_SKIP_EMPTY_LINES și liniile goale rămân. Opțiunea are efect doar împreună cu FILE_IGNORE_NEW_LINES.

Comenzi înrudite

  • file_get_contents: Citește tot conținutul unui fișier (sau al unei adrese URL) într-un text.
  • fgets: Citește o linie dintr-un fișier deschis cu fopen.
  • explode: Împarte un text în bucăți după un separator și le pune într-un tablou.