file_get_contents

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

file_get_contents β€” Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² строку

ОписаниС

function file_get_contents(
Β Β Β Β string $filename,
Β Β Β Β bool $use_include_path = false,
Β Β Β Β ?resource $context = null,
Β Β Β Β int $offset = 0,
Β Β Β Β ?int $length = null
): string|false

Ѐункция ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ file(), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ функция file_get_contents() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² строкС Π΄Π»ΠΈΠ½ΠΎΠΉ length Π±Π°ΠΉΡ‚ΠΎΠ² со смСщСния offset. Ѐункция file_get_contents() Π²Π΅Ρ€Π½Ρ‘Ρ‚ false, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ file_get_contents() Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ отобраТСния Ρ„Π°ΠΉΠ»Π° Π² памяти (memory mapping), Ссли опСрационная систСма Π΅Ρ‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ URI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит спСцсимволы Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°, URI-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ urlencode().

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

filename

Имя Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

use_include_path

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Для поиска Ρ„Π°ΠΉΠ»Π° Π² спискС ΠΏΡƒΡ‚Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ include path Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠ΅Ρ€Π°Π΄Π°ΡŽΡ‚ константу FILE_USE_INCLUDE_PATH. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π² ΠΊΠΎΠ΄Π΅ со строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ‚Π°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ получится, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы FILE_USE_INCLUDE_PATH ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΈΠΏΡƒ int. Π’ строгом Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.

context

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ рСсурс контСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция stream_context_create(). Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, Ссли спСцифичный контСкст Π½Π΅ трСбуСтся.

offset

Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начнётся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ смСщСния отсчитываСтся с ΠΊΠΎΠ½Ρ†Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Поиск смСщСния offset Π½Π΅ поддСрТиваСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° поиска смСщСния Π½Π° Π½Π΅Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈΠ½ΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… смСщСниях, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ нСпрСдсказуСмым, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅.

length

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ осущСствляСтся ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнут ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°. Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ примСняСтся ΠΈ ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ считала, ΠΈΠ»ΠΈ false, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, Ρ‚Π°ΠΊ ΠΈ нСлогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ приводится ΠΊ 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 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ получСния ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° исходного ΠΊΠΎΠ΄Π° домашнСй страницы сайта

<?php

$homepage
= file_get_contents('http://www.example.com/');
echo
$homepage;

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 Поиск Ρ„Π°ΠΉΠ»ΠΎΠ² Π² include_path

<?php

// Если Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ объявили (strict_types=1);
$file = file_get_contents('./people.txt', true);

// Π˜Π½Π°Ρ‡Π΅
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #3 Π§Ρ‚Π΅Π½ΠΈΠ΅ сСкции Ρ„Π°ΠΉΠ»Π°

<?php

// Π§ΠΈΡ‚Π°Π΅ΠΌ 14 символов, начиная с 21 символа
$section = file_get_contents('./people.txt', FALSE, NULL, 20, 14);

var_dump($section);

?>

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ Π½Π°:

string(14) "lle Bjori Ro"

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #4 Π Π°Π±ΠΎΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΌΠΈ контСкстами

<?php

// Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΏΠΎΡ‚ΠΎΠΊ
$opts = [
'http' => [
'method' => "GET",
'header' => "Accept-language: en\r\n" .
"Cookie: foo=bar",
]
];

$context = stream_context_create($opts);

// ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» с установлСнными HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ
$file = file_get_contents('http://www.example.com/', false, $context);

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ѐункция бСзопасна для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

Подсказка

ВмСсто Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ URL-адрСса, Ссли Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ fopen wrappers. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ названия Ρ„Π°ΠΉΠ»Π° рассказываСт описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fopen(). Π Π°Π·Π΄Π΅Π» Β«ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈΒ» Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Ρ‘Ρ‚ ссылки Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ°Ρ…, содСрТит замСчания ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ список ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с сСрвСром Microsoft IIS ΠΏΠΎ SSL-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сталкиваСтся с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ 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
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 3 notes

up
37
Bart Friederichs ΒΆ
14 years ago
file_get_contents can do a POST, create a context for that first:

<?php

$opts = array('http' =>
  array(
    'method'  => 'POST',
    'header'  => "Content-Type: text/xml\r\n".
      "Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
    'content' => $body,
    'timeout' => 60
  )
);
                        
$context  = stream_context_create($opts);
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);

?>
up
4
KC ΒΆ
2 years ago
If doing a negative offset to grab the end of a file and the file is shorter than the offset, then file_get_contents( ) will return false.

If you want it to just return what is available when the file is shorter than the negative offset, you could try again.

For example...

$contents = file_get_contents( $log_file, false, null, -4096 ); // Get last 4KB

if ( false === $contents ) {
    // Maybe error, or maybe file less than 4KB in size.

    $contents = file_get_contents( $log_file, false, null );

    if ( false === $contents ) {
        // Handle real error.
    }
}
up
3
brentcontact at daha dot us ΒΆ
2 years ago
To prevent mixed content most browsers/functions will use the protocol already used if you specify only // instead of http:// or https://. This is not the case with file_get_contents. You must specify the protocol. 

This does not work:
<?php
$jsonData = file_get_contents('//example.com/file.json');
print $jsonData;
?>

Specifying only 'example.com/file.json' without the double slash does not work either.

When running on Apache 2.4 , using $_SERVER['REQUEST_SCHEME'] is a better way to be protocol agnostic.
<?php
$jsonData = file_get_contents($_SERVER['REQUEST_SCHEME'].'://example.com/file.json');
print $jsonData;
?>

If using another web server, you may have to get the protocol another way or hard code it.