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|false
Code language: PHP (php)
The fread()
function has two parameters:
- The
$stream
is a file system pointer resource, which is typically the result of thefopen()
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|false
Code 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,64
Code 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.