Ce face fseek
fseek stabilește de unde va citi sau scrie următoarea operație. Al treilea parametru spune față de ce se numără: SEEK_SET de la început (implicit), SEEK_CUR de la poziția curentă, SEEK_END de la final, de obicei cu o valoare negativă.
Atenție la valoarea returnată: 0 înseamnă succes, iar -1 eroare. Mutarea dincolo de final este permisă și returnează tot 0.
Parametri
| Parametru | Descriere |
|---|---|
$stream |
Resursa returnată de fopen. |
$offset |
Poziția, în octeți. Poate fi negativă cu SEEK_END sau SEEK_CUR. |
$whence |
Opțional. SEEK_SET, SEEK_CUR sau SEEK_END. |
Ce returnează
0 la succes, -1 la eroare.
Exemple
Exemplul 1: Salt la o poziție și de la final
<?php
file_put_contents("cod.txt", "RO-2026-IASI");
$f = fopen("cod.txt", "r");
fseek($f, 3);
echo fread($f, 4) . "\n";
fseek($f, -4, SEEK_END);
echo fread($f, 4);
fclose($f);
Rezultat
2026
IASI
Exemplul 2: Ultimii octeți dintr-un jurnal mare
<?php
file_put_contents("server.log", str_repeat("INFO cerere OK\n", 1000) . "ERROR disc plin\n");
$f = fopen("server.log", "r");
fseek($f, -16, SEEK_END);
echo fread($f, 16);
fclose($f);
Rezultat
ERROR disc plin
Greșeli frecvente
- Verifici succesul cu
if (fseek(...)). Succesul este 0, adică fals. Compară cu=== 0. - Calculezi poziția în caractere pe un text cu diacritice. Pozițiile sunt în octeți.