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
\nde la final. Aplicărtrimsautrim. - 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.