file_get_contents
Данная функция похожа на функцию file() с той лишь разницей, что file_get_contents() возвращает содержимое файла в строке, начиная с указанного смещения offset и до length байт. В случае неудачи, file_get_contents() вернёт false .
Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует технику отображения файла в память (memory mapping), если она поддерживается вашей операционной системой.
Замечание:
Если вы открываете URI, содержащий спецсимволы, такие как пробел, вам нужно закодировать URI при помощи urlencode() .
Список параметров
Замечание:
Можно использовать константу FILE_USE_INCLUDE_PATH для поиска файла в include path. Только помните, что если вы используете строгую типизацию, то так сделать не получится, поскольку FILE_USE_INCLUDE_PATH имеет тип int . В таком случае используйте true .
Корректный ресурс контекста, созданный с помощью функции stream_context_create() . Если в использовании особого контекста нет необходимости, можно пропустить этот параметр передав в него значение null .
Смещение, с которого начнётся чтение оригинального потока. Отрицательное значение смещения будет отсчитываться с конца потока.
Поиск смещения ( offset ) не поддерживается при работе с удалёнными файлами. Попытка поиска смещения на нелокальных файлах может работать при небольших смещениях, но результат будет непредсказуемым, так как функция работает на буферизованном потоке.
Максимальный размер читаемых данных. По умолчанию чтение осуществляется пока не будет достигнут конец файла. Учтите, что этот параметр применяется и к потоку с фильтрами.
Возвращаемые значения
Функция возвращает прочтённые данные или false в случае возникновения ошибки.
Эта функция может возвращать как логическое значение false , так и значение не типа boolean, которое приводится к false . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Ошибки
Будет сгенерирована ошибка уровня E_WARNING в случаях, если не удастся найти filename , задан length меньше нуля, или поиск по смещению offset в потоке завершится неудачно.
Когда file_get_contents() вызывается в каталоге, в Windows ошибка генерируется E_WARNING , а с PHP 7.4 также в других операционных системах.
Список изменений
Версия | Описание |
---|---|
8.0.0 | Параметр length теперь допускает значение null . |
7.1.0 | Добавлена поддержка отрицательных значений offset . |
Примеры
Пример #1 Получить и вывести исходный код домашней страницы сайта
Пример #2 Поиск файлов в include_path
// Если включены строгие типы, то есть объявлено (strict_types=1);
$file = file_get_contents ( ‘./people.txt’ , true );
// Иначе
$file = file_get_contents ( ‘./people.txt’ , FILE_USE_INCLUDE_PATH );
?>?php
Пример #3 Чтение секции файла
// Читаем 14 символов, начиная с 21 символа
$section = file_get_contents ( ‘./people.txt’ , FALSE , NULL , 20 , 14 );
var_dump ( $section );
?>?php
Результатом выполнения данного примера будет что-то подобное:
Пример #4 Использование потоковых контекстов
// Создаём поток
$opts = array(
‘http’ =>array(
‘method’ => «GET» ,
‘header’ => «Accept-language: en\r\n» .
«Cookie: foo=bar\r\n»
)
);
?php
$context = stream_context_create ( $opts );
// Открываем файл с помощью установленных выше HTTP-заголовков
$file = file_get_contents ( ‘http://www.example.com/’ , false , $context );
?>
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen() . Смотрите также список поддерживаемых обёрток URL, их возможности, замечания по использованию и список предопределённых констант в разделе Поддерживаемые протоколы и обёртки.
При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify . PHP сообщит об этом как «SSL: Fatal Protocol Error» в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP умеет определять, что на стороне сервера находится проблемный IIS при открытии потока с помощью обёртки https:// и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.
Смотрите также
- file() — Читает содержимое файла и помещает его в массив
- fgets() — Читает строку из файла
- fread() — Бинарно-безопасное чтение файла
- readfile() — Выводит файл
- file_put_contents() — Пишет данные в файл
- stream_get_contents() — Читает оставшуюся часть потока в строку
- stream_context_create() — Создаёт контекст потока
- $http_response_header
Reading a File into a String or Array
To read data from a file, PHP offers several possibilities. Probably the easiest way is to read it all at once with file_get_contents() function and then output it to the user or read it line by line with file() function.
Read entire file into a string
The function file_get_contents() returns the contents of a file (or stream) as a string so that it all can be processed further. The following code reads in a file called file.txt and prints out its contents. This function is binary-safe, that’s why no file mode can (or has to) be used:
Example: Read the source of the web page of a website:
The preceding code returns empty output if the directive allow_url_fopen is off in PHP’s ini configuration file.
Read entire file into an array
The file() function works as file_get_contents() , but returns the file’s contents as an array: Each element is one row in the file (including the line break character, use FILE_IGNORE_NEW_LINES flag to remove the newline character at the end of each array element).
Example: Read a URL into an array:
file_get_contents() function
- $filename : name of the file or URL to read.
- $use_include_path : (optional, default is false ) assign true to search the include path if the file is not found.
- $context : (optional) can be null or a context resource.
- $offset : (optional) from where the reading starts, negative value count from the end of the file.
- $length : (optional) Maximum length of data read (default is the entire file).
Example: Reading a file or URL
Example: Read a portion of the file
Example: Sending a POST request with $context parameter
$url = 'http://localhost/example.php'; $data = array('user' => 'brainbell', 'pass' => 'pwd'); $options = array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($data) ); // Create a context $context = stream_context_create(array('http' => $options)); echo file_get_contents($url, false, $context);
The preceding code prints the following output on the browser:
file() function
- $filename : name of the file or URL to read.
- $flags : (optional)
- FILE_USE_INCLUDE_PATH : search the file in include path if not found.
- FILE_IGNORE_NEW_LINES : by default the line break character includes at the end of each array entry, use this flag to omit the newline (line break) character.
- FILE_SKIP_EMPTY_LINES : ignore empty lines (the output array will not contain any empty element).
- $context : (optional) a context resource.
Example: Read a file or URL into an array
The file() function preserves newline characters at the end of each array element. If you want to strip the newline characters, pass the constant FILE_IGNORE_NEW_LINES as the second argument to the function:
You can also skip empty lines by using FILE_SKIP_EMPTY_LINES as the second argument:
To remove newline characters and skip empty lines, separate the two constants with a pipe sign:
Example: Sending a POST request with $context parameter
$url = 'http://localhost/example.php'; $data = array('user' => 'brainbell', 'pass' => 'pwd'); $options = array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($data) ); // Create a context $context = stream_context_create(array('http' => $options)); $array = file($url,FILE_IGNORE_NEW_LINES,$context); print_r($array);
The preceding code prints the following output on the browser:
Array ( [0] => User: brainbell [1] => Pass: pwd )
Working with Files in PHP:
Перебор значений массива и file_get_contents()
В файле links.txt лежат ссылки которым нужно сделать file_get_contents; $b — количество раз, при таком коде выполняется только на последнюю строку в файле, т.е на последнюю ссылку, как исправить, что бы действовало на все строки, подскажите пожалуйста.
Перебор значений массива через запятую
По логике вещей я так понимаю, чтобы перебрать значения массива через запятую. echo explode(‘, ‘.
Как передать json-объект в параметре массива php через file_get_contents?
Приветствую! Ломаю голову не первый час, поиски не увенчались успехом. Есть массив параметров.
Перебор массива
Собственно вот массив, с вопросами для тестов: <?php $questions = array( array( .
Перебор массива
Здравствуйте, столкнулся с такой проблемой как перебор массива с помощью цикла Я пока что новичок.
$file = file("links.txt"); $i = 0; foreach ($file as $string) { file_get_contents($string); $i++; echo $string."\r\n"; } echo $i." get's done!";