PHP file() Function
Summary: in this tutorial, you will learn how to use the PHP file()
function to read the entire file into an array.
Introduction to the PHP file() function
The file()
function reads an entire file specified by a $filename
into an array:
file ( string $filename , int $flags = 0 , resource $context = ? ) : array
Code language: PHP (php)
The file()
function has three parameters:
$filename
is the path to the file.$flags
is an optional parameter that can be one or more of the constants below.$context
is a valid stream context resource.
The following table shows the values for the $flags
:
Flag | Meaning |
---|---|
FILE_USE_INCLUDE_PATH | Search for the file in the include path. |
FILE_IGNORE_NEW_LINES | Skip the newline at the end of the array element. |
FILE_SKIP_EMPTY_LINES | Skip empty lines in the file. |
The file()
function returns an array in which each element corresponds to a line of the file. If you don’t want to include the newline character in each array element, you can use the FILE_IGNORE_NEW_LINES
flag.
To skip empty lines, you can use the FILE_SKIP_EMPTY_LINES option.
Note that the file()
function also works with a remote file using the HTTP or FTP protocol.
To read the entire file into a string, you can use the file_get_contents()
function.
PHP file() function example
The following example uses the file()
function to read the robots.txt
file from the php.net
into an array and display its contents line by line:
$lines = file(
'https://www.php.net/robots.txt',
FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES
);
if ($lines) {
foreach ($lines as $line) {
echo htmlspecialchars($line) . PHP_EOL;
}
}
Code language: HTML, XML (xml)
If you run the script behind a proxy, it won’t work and issue the following error:
Warning: file(http://www.php.net/robots.txt): failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respon in ...\file.php on line 5
Code language: plaintext (plaintext)
To fix it, you need to create a new stream context and set the proxy like this:
$options = [
'http'=>[
'method'=>"GET",
'header'=>"Accept-language: en\r\n",
'proxy'=>"tcp://<proxy_ip>:<proxy_port>"
]
];
$context = stream_context_create($options);
$lines = file(
'https://www.php.net/robots.txt',
FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES,
$context
);
if ($lines) {
foreach ($lines as $line) {
echo htmlspecialchars($line) . PHP_EOL;
}
}
Code language: HTML, XML (xml)
In this code, you need to replace the <proxy_ip>
and <proxy_port>
with your current proxy.
Summary
- Use the PHP
file()
to read the contents of a local or remote file into an array. Each line of the file will be an element of the array.