PHP fseek() | Move File Pointer

The PHP fseek() function is used when we need to move the file pointer to particular position in the file. For example:

<?php
   $file = "codescracker.txt";
   $fp = fopen($file, "r");
   
   $line = fgets($fp);
   echo $line;
   
   echo "<br>";
   fseek($fp, 0);         // moves file pointer to beginning
   $line = fgets($fp);
   echo $line;
   
   fclose($fp);
?>

The output of above PHP example on fseek() function is:

php fseek function

Note - Using the fseek() function, we can move file pointer to required position, using number of bytes from starting. For example: use 0 to put file pointer to the beginning of the file, 12 to put file pointer 12 character forward from the beginning of the file. To put file pointer at the end of file, you can use filesize(file).

Note - The filesize() returns the size of file.

PHP fseek() Syntax

The syntax of fseek() function in PHP, is:

fseek(filePointer, numberOfBytes, whence)

The first two parameters (filePointer and numberOfBytes) are required, whereas the last parameter is optional.

Note - The filePointer parameter specifies the pointer to file

Note - The numberOfBytes parameter specifies the number of bytes to move the file pointer from the beginning of the file

Note - The whence parameter is used when we need to force the fseek(), not to seek the file pointer from the beginning, rather to seek from either the current position or from the end of the file. Here are the list of values, used to define whence parameter:

  • SEEK_SET - This is the default value, that is used to utilize fseek() as usual
  • SEEK_CUR - Used when we need to move the file pointer to given number of bytes, from its current position, not from the beginning of the file
  • SEEK_END - Used when we need to move the file pointer to given number of bytes, from end of the file, instead of beginning. The value of numberOfBytes in this case, must be a negative value

PHP Move File Pointer from its Current Position

Before creating an example, let's take a snapshot of the file say codescracker.txt that is going to use:

php move file pointer from current position

Now here is an example on seeking a file pointer from its current position, instead of beginning

<?php
   $file = "codescracker.txt";
   $fp = fopen($file, "r");
   
   if($fp)
   {
      $line = fgets($fp);
      echo $line;
   
      echo "<br>";
      fseek($fp, 7, SEEK_CUR);
      $line = fgets($fp);
      echo $line;
   
      fclose($fp);
   }
   else
      echo "<p>Unable to open the file</p>";
?>

The output of above PHP example should be:

php move file pointer from current position example

See the output, all the 7 characters, that are What's including a space got skipped.

PHP Move File Pointer from the End of File

<?php
   $file = "codescracker.txt";
   $fp = fopen($file, "r");
   
   if($fp)
   {
      $line = fgets($fp);
      echo $line;
   
      echo "<br>";
      fseek($fp, -8, SEEK_END);
      $line = fgets($fp);
      echo $line;
   
      fclose($fp);
   }
   else
      echo "<p>Unable to open the file</p>";
?>

The output of above PHP example, should be:

php move file pointer from end of file

PHP Online Test


« Previous Tutorial Next Tutorial »

Follow/Like Us on Facebook




Subscribe Us on YouTube