# file

(PHP 4, PHP 5)

file — Reads entire file into an array

### Description

array file ( string `$filename` [, int `$flags` [, resource `$context` ]] )

Reads an entire file into an array.

> Note: You can use file_get_contents() to return the contents of a file as a string.

### Parameters

`filename`

  Path to the file.

  Tip

  You can use a URL as a filename with this function if the fopen wrappers have been enabled. See fopen() for more details on how to specify the filename and List of Supported Protocols/Wrappers for a list of supported URL protocols.

`flags`

  The optional parameter `flags` can be one, or more, of the following constants:

  `FILE_USE_INCLUDE_PATH`
    Search for the file in the include_path.
  `FILE_IGNORE_NEW_LINES`
    Do not add newline at the end of each array element
  `FILE_SKIP_EMPTY_LINES`
    Skip empty lines
  `FILE_TEXT`
    The content is returned in UTF-8 encoding. You can specify a different encoding by creating a custom context. This flag cannot be used with `FILE_BINARY`. This flag is only available since PHP 6.
  `FILE_BINARY`
    The content is read as binary data. This is the default setting and cannot be used with `FILE_TEXT`. This flag is only available since PHP 6.
`context`

  A context resource created with the stream_context_create() function.

  > Note: Context support was added with PHP 5.0.0. For a description of contexts, refer to Streams.

### Return Values

Returns the file in an array. Each element of the array corresponds to a line in the file, with the newline still attached. Upon failure, file() returns `FALSE`.

> Note: Each line in the resulting array will include the line ending, unless `FILE_IGNORE_NEW_LINES` is used, so you still need to use rtrim() if you do not want the line ending present.

> Note: If you are having problems with PHP not recognizing the line endings when reading files either on or created by a Macintosh computer, you might want to enable the auto_detect_line_endings run-time configuration option.

### ChangeLog

Version | Description
--- | ---
6.0.0 | Added support for the `FILE_TEXT` and `FILE_BINARY` flags.
5.0.0 | The `context` parameter was added
5.0.0 | Prior to PHP 5.0.0 the `flags` parameter only covered include_path and was enabled with 1
4.3.0 | file() became binary safe

### Examples

Example#1 file() example

`<?php
// Get a file into an array. In this example we'll go through HTTP to get
// the HTML source of a URL.
$lines = file('http://www.example.com/');
// Loop through our array, show HTML source as HTML source; and line numbers too.
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// Another example, let's get a web page into a string. See also file_get_contents().
$html = implode('', file('http://www.example.com/'));
?>`

### Notes

Warning

When using SSL, Microsoft IIS will violate the protocol by closing the connection without sending a close_notify indicator. PHP will report this as "SSL: Fatal Protocol Error" when you reach the end of the data. To workaround this, you should lower your error_reporting level not to include warnings. PHP 4.3.7 and higher can detect buggy IIS server software when you open the stream using the https:// wrapper and will suppress the warning for you. If you are using fsockopen() to create an ssl:// socket, you are responsible for detecting and suppressing the warning yourself.

### See Also

- readfile()
- fopen()
- fsockopen()
- popen()
- file_get_contents()
- include()
- stream_context_create()