(PHP 4, PHP 5, PHP 7, PHP 8)
fseek — Перемещает позицию файлового указателя
Функция устанавливает положение указателя в файле, на который ссылается
поток stream
. Новое положение указателя измеряется в байтах
от начала файла и рассчитывается путём прибавления значения параметра
offset
к позиции параметра whence
.
В общем случае разрешается перемещать указатель за пределы конца файла; при записи данных за пределами конца файла чтение из незаписанной области между концом файла и заданной позицией указателя выдаст байты со значением 0. Однако отдельные потоки не поддерживают такое поведение, в первую очередь потоки на основе хранилищ фиксированного размера.
stream
Ресурс (resource) указателя файловой системы, который обычно создают функцией fopen().
offset
Смещение.
В параметр offset
передают отрицательное значение,
а для параметра whence
устанавливают
значение SEEK_END
,
чтобы перейти к позиции перед концом файла.
whence
Параметр whence
принимает следующие значения:
SEEK_SET
— Перемещает указатель в положение,
равное количеству байтов смещения offset
от начала файла.
SEEK_CUR
— Перемещает указатель вперёд — в положение,
равное количеству байтов смещения offset
от текущей позиции.
SEEK_END
— Перемещает указатель за пределы конца файла — в положение,
равное количеству байтов смещения offset
от конца файла.
Функция возвращает 0
, если выполнилась успешно;
иначе возвращает значение -1
.
Функция имитирует поведение функции языка C с тем же названием и возвращает нестандартные значения, непохожие на те, которые ожидались бы в PHP.
Пример #1 Пример использования функции fseek()
<?php
$fp = fopen('somefile.txt', 'r');
// Читаем фрагмент данных
$data = fgets($fp, 4096);
// Перемещаемся назад к началу файла —
// то же, что и вызов rewind($fp);
fseek($fp, 0);
?>
Замечание:
Функция будет только дописывать данные в конец файла, независимо от позиции указателя в файле, а результат вызова функции fseek() будет неопределённым, если файл открыли в режиме
a
— только для чтения или в режимеa+
— для чтения или добавления данных в конец файла.
Замечание:
Не каждый поток поддерживает перемещение указателя. В потоках, которые не поддерживают перемещение файлового указателя, функция перемещает указатель вперёд от текущей позиции путём считывания и отбрасывания данных; другие формы перемещения указателя закончатся ошибкой.