PHP Read File

Summary: in this tutorial, you’ll learn how to read a file using the various built-in PHP functions.

To read the contents from a file, you follow these steps:

  • Open the file for reading using the fopen() function.
  • Read the contents from the file using the fread() function.
  • Close the file using the fclose() function.

Here’s the syntax of the fread() function:

fread ( resource $stream , int $length ) : string|falseCode language: PHP (php)

The fread() function has two parameters:

  • The $stream is a file system pointer resource, which is typically the result of the fopen() function.
  • The $length specifies the maximum number of bytes to read. If you want to read the entire file, you can pass the file size to the $length parameter.

The fread() function returns the file contents or false if it fails to read.

The fread() function stops reading the file once the $length number of bytes has been read or the end of file (EOF) has been reached.

To check if the file pointer is at end of file, you can pass it to the feof() function:

feof ( resource $stream ) : bool
Code language: PHP (php)

The feof() function returns true if the $stream is at the EOF or an error occurs. Otherwise, it returns false.

To read a file line by line, you use the fgets() function:

fgets ( resource $handle , int $length = ? ) : string|falseCode language: PHP (php)

Like the fread() function, the fgets() function accepts a file system pointer resource and up to a number of bytes to read. If you omit the $length argument, the fread() function will read the entire line.

PHP read file examples

Let’s take some examples of how to read a file.

1) Read the entire file into a string

Suppose that you have a file named population.txt located at public directory with the following contents:

1	New York	 New York	8,253,213
2	Los Angeles	 California	3,970,219
3	Chicago	 Illinois	2,677,643
4	Houston	 Texas	2,316,120
5	Phoenix	 Arizona	1,708,127
6	Philadelphia Pennsylvania	1,578,487
7	San Antonio	 Texas	1,567,118
8	San Diego	 California	1,422,420
9	Dallas	 Texas	1,343,266
10	San Jose	 California	1,013,616
Code language: plaintext (plaintext)

The following example uses the fread() function to read the contents of the entire population.txt file into a string and shows it on the webpage:

<?php

$filename = './public/population.txt';
$f = fopen($filename, 'r');

if ($f) {
    $contents = fread($f, filesize($filename));
    fclose($f);
    echo nl2br($contents);
}

Code language: HTML, XML (xml)

How it works.

First, open the population.txt file using the fopen() function:

$f = fopen($filename, 'r');Code language: PHP (php)

Second, read the contents of the entire file using the fread() function; use the filesize() function to get the size of the file:

$contents = fread($f, filesize($filename));Code language: PHP (php)

Third, show the contents of the file on a web page; use the nl2br() function to convert the newline characters to <br> tags.

echo nl2br($contents);Code language: PHP (php)

Finally, close the file using the fclose() function.

Note that the file_get_contents() function is a shortcut for opening a file, reading the whole file’s contents into a string, and close it.

2) Read some characters from a file

To read some characters from a file, you specify the number of bytes to read. The following example uses the fread() function to read up to 100 bytes from the population.txt file:

<?php

$filename = './public/population.txt';
$f = fopen($filename, 'r');
if ($f) {
    $contents = fread($f, 100);
    fclose($f);
    echo nl2br($contents);
}Code language: HTML, XML (xml)

Output:

1 New York  New York 8,253,213
2 Los Angeles  California 3,970,219
3 Chicago  Illinois 2,677,64Code language: plaintext (plaintext)

3) Read a file line by line

The following example uses the fgets() funtion to read the population.txt file line by line:

<?php

$filename = './public/population.txt';
$lines = [];

$f = fopen($filename, 'r');

if (!$f) {
    return;
}

while (!feof($f)) {
    $lines[] = fgets($f);
}

print_r($lines);

fclose($f);Code language: HTML, XML (xml)

Summary

  • Use the fread() function to read some or all contents from a file.
  • Use the fgets() function to read a line from a file.
  • Use the feof() function to test the end-of-file has been reached.
  • Use the filesize() function to get the size of the file.
Did you find this tutorial useful?