fseek

Seeks on a file pointer

Description

int fseek(resource $stream, int $offset, int $whence = SEEK_SET)

Sets the file position indicator for the file referenced by stream. The new position, measured in bytes from the beginning of the file, is obtained by adding offset to the position specified by whence.

In general, it is allowed to seek past the end-of-file; if data is then written, reads in any unwritten region between the end-of-file and the sought position will yield bytes with value 0. However, certain streams may not support this behavior, especially when they have an underlying fixed size storage.

Parameters

stream

A file system pointer resource that is typically created using fopen.

offset

The offset.

To move to a position before the end-of-file, a negative value in the offset must be passed and the whence parameter must be set to SEEK_END.

whence

whence values are:

  • SEEK_SET - Set position equal to offset bytes from the start of the file.
  • SEEK_CUR - Set position to current location plus offset bytes.
  • SEEK_END - Set position to end-of-file plus offset bytes.

Return Values

Upon success, returns 0; otherwise, returns -1.

Warning

This function was created to imitate the C language function of the same name. Please pay attention to the return values as they differ from what one would expect in PHP.

Examples

Example #1 fseek example

<?php

$fp = fopen('somefile.txt', 'r');

// read some data
$data = fgets($fp, 4096);

// move back to the beginning of the file
// same as rewind($fp);
fseek($fp, 0);

?>

Notes

Note:

If you have opened the file in append (a or a+) mode, any data you write to the file will always be appended, regardless of the file position, and the result of calling fseek will be undefined.

Note:

Not all streams support seeking. For those that do not support seeking, forward seeking from the current position is accomplished by reading and discarding data; other forms of seeking will fail.

See Also

  • ftell
  • rewind