PHP отправки переменных в файл_get_contents ()

Я хочу, чтобы иметь возможность отправлять несколько переменных в файл через file_get_contents() .

Это firstfile.php:

 <?php $myvar = 'This is a variable'; // need to send $myvar into secondfile.php $mystr = file_get_contents('secondfile.php'); ?> 

Это secondfile.php:

 The value of myvar is: <?php echo $myvar; ?> 

Я хочу, чтобы переменная $mystr равнялась 'The value of myvar is: This is a variable'

Есть ли другая функция, которая позволит вам сделать это на PHP?

 ob_start(); include 'secondfile.php'; $myvar = ob_get_clean(); 

Однако ob_start : для многих ob_start в вашем коде обычно есть знак, вы должны определить функции, которые возвращают строки, которые затем вы можете выбрать для эха или нет.

Существует большая разница между получением содержимого файла и запуском скрипта :

  • include – эта директива PHP запускает указанный файл как скрипт , а область действия совпадает с областью, в которой выполняется вызов include . Поэтому, чтобы «передавать» переменные, вам просто нужно определить их перед вызовом include . include могут использоваться только локально (могут включаться только файлы в той же файловой системе, что и сервер PHP).

  • file_get_contents При получении файла локально это просто извлекает текст, содержащийся в файле. Обработки PHP не выполняются, поэтому нет возможности «пропускать» переменные. Если вы проверите $myvar в приведенном выше примере, вы увидите, что он содержит точную строку « <?php echo $myvar; ?> » – она ​​не была выполнена.

    Однако PHP немного смутил некоторые вещи, разрешив file_get_contents содержимое «удаленного» файла – интернет-адрес. В этом случае понятие одно и то же: PHP просто втягивает исходный результат того, что содержится в этом адресе, но PHP, Java, Ruby или что-то еще работает на этом удаленном сервере, возможно , выполнил что-то для получения этого результата.

    В этом случае вы можете «передавать» переменные в URL-адресе (называемом параметрами запроса GET ) в соответствии со спецификациями URL-адреса (если это API или что-то подобное). Невозможно передать переменные по вашему выбору, которые не были указаны для обработки в скрипте, который будет обрабатываться этим удаленным сервером.

    Примечание. «Удаленный сервер», упомянутый МОЖЕТ быть вашим собственным сервером, хотя будьте осторожны, потому что это может еще больше запутать вещи, если вы действительно не знаете, как все это работает (это становится вторым, полностью отдельным запросом). Обычно нет веских оснований для этого, а не для использования include , хотя они могут достичь аналогичных результатов.

Следующий фрагмент кода показывает простой способ отправки запроса HTTP-сообщения с помощью функции PHP file_get_contents:

 <?php $url = 'http://url.com/path'; $data = array('param1' => 'value1', 'param2' => 'value2') // use key 'http' even if you send the request to https://... $options = array('http' => array( 'method' => 'POST', 'content' => http_build_query($data) )); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); print_r($result); 

ИЛИ Передача переменной в URL (php) и file_get_contents ()

Вы можете использовать функцию sprintf, например: firstfile.txt

 The value of my var is: %s 

secondfile.php

 <?php $f = file_get_contents("firstfile.txt"); $var = "some"; echo sprintf($f, $var); 

Результат будет

Значение моего var: some