fgets în PHP

Citește o linie dintr-un fișier deschis cu fopen.

Sintaxă
fgets($stream, ?int $length = null): string|false

Ce face fgets

fgets citește de la poziția curentă până la sfârșitul liniei, inclusiv caracterul de linie nouă (\n). La următorul apel continuă cu linia următoare. Când nu mai are ce citi, returnează false.

Este metoda potrivită pentru fișiere mari (jurnale, exporturi): în memorie este o singură linie odată, nu tot fișierul.

Parametri

Parametru Descriere
$stream Resursa returnată de fopen.
$length Opțional. Citește cel mult $length - 1 octeți dacă linia este mai lungă.

Ce returnează

Linia citită, cu \n la final, sau false la sfârșitul fișierului.

Exemple

Exemplul 1: Citire linie cu linie

rtrim elimină linia nouă de la finalul fiecărei linii.

<?php
file_put_contents("orase.txt", "Iași\nCluj\nTimișoara\n");

$f = fopen("orase.txt", "r");
$nr = 1;
while (($linie = fgets($f)) !== false) {
    echo $nr++ . ". " . rtrim($linie) . "\n";
}
fclose($f);

Rezultat

1. Iași
2. Cluj
3. Timișoara

Exemplul 2: Căutare într-un jurnal mare

<?php
file_put_contents("server.log", "INFO pornire\nERROR baza de date\nINFO cerere\nERROR timeout\n");

$f = fopen("server.log", "r");
$erori = 0;
while (($linie = fgets($f)) !== false) {
    if (str_starts_with($linie, "ERROR")) {
        $erori++;
    }
}
fclose($f);

echo "Erori găsite: $erori";

Rezultat

Erori găsite: 2

Greșeli frecvente

  • Compari linia citită cu un text și comparația eșuează din cauza lui \n de la final. Aplică rtrim sau trim.
  • Scrii bucla while (!feof($f)). La final primești o ultimă „linie” false. Mai sigur: while (($linie = fgets($f)) !== false).

Comenzi înrudite

  • fopen / fclose: Deschide un fișier pentru citire sau scriere și returnează o resursă; fclose îl închide.
  • feof: Verifică dacă s-a ajuns la sfârșitul unui fișier deschis.
  • file: Citește un fișier întreg într-un tablou, câte o linie în fiecare element.
  • fread: Citește un număr dat de octeți dintr-un fișier deschis.