Как выполнить и получить содержимое файла .php в переменной?

Я хочу получить содержимое файла .php в переменной на другой странице.

У меня есть два файла: myfile1.php и myfile2.php .

myfile2.php

 <?PHP $myvar="prashant"; // echo $myvar; ?> 

Теперь я хочу получить значение, отраженное myfile2.php в переменной в myfile1.php, я попробовал следующий путь, но также взял все содержимое, включая php tag ().

 <?PHP $root_var .= file_get_contents($_SERVER['DOCUMENT_ROOT']."/myfile2.php", true); ?> 

Скажите, как я могу получить содержимое, возвращенное одним файлом PHP, в переменную, определенную в другом файле PHP.

благодаря

Solutions Collecting From Web of "Как выполнить и получить содержимое файла .php в переменной?"

Для этого вы можете использовать директиву include .

Файл 2:

 <?php $myvar="prashant"; ?> 

Файл 1:

 <?php include('myfile2.php'); echo $myvar; ?> в <?php include('myfile2.php'); echo $myvar; ?> 

Вы должны различать две вещи:

  • Вы хотите захватить вывод ( echo , print , …) включенного файла и использовать вывод в переменной (строке)?
  • Вы хотите вернуть определенные значения из включенных файлов и использовать их в качестве переменной в своем хост- скрипте?

Локальные переменные в ваших включенных файлах всегда будут перемещены в текущую область вашего хост- скрипта – это следует отметить. Вы можете объединить все эти функции в один:

include.php

 $hello = "Hello"; echo "Hello World"; return "World"; 

host.php

 ob_start(); $return = include 'include.php'; // (string)"World" $output = ob_get_clean(); // (string)"Hello World" // $hello has been moved to the current scope echo $hello . ' ' . $return; // echos "Hello World" 

return полезность пригодится, особенно при использовании файлов конфигурации.

config.php

 return array( 'host' => 'localhost', .... ); 

app.php

 $config = include 'config.php'; // $config is an array 

РЕДАКТИРОВАТЬ

Чтобы ответить на ваш вопрос об ограничении производительности при использовании выходных буферов, я просто немного быстро проверил. 1,000,000 итераций ob_start() и соответствующего $o = ob_get_clean() занимают около 7.5 секунд на моей машине Windows (возможно, это не лучшая среда для PHP). Я бы сказал, что влияние производительности должно считаться довольно маленьким …

Если вам нужна только echo() на странице содержимого, вы можете использовать буферизацию вывода:

 ob_start(); include 'myfile2.php'; $echoed_content = ob_get_clean(); // gets content, discards buffer 

См. http://php.net/ob_start

Я всегда стараюсь избегать функций ob_ . Вместо этого я использую:

 <?php $file = file_get_contents('/path/to/file.php'); $content = eval("?>$file"); echo $content; ?> 

«На самом деле я просто смотрел, что есть какой-то метод возвращаемого типа, который может прямо дать мне значение» – вы просто ответили на свой вопрос.

См. http://sg.php.net/manual/en/function.include.php , Пример # 5

file1.php:

 <? return 'somevalue'; ?> 

file2.php:

 <? $file1 = include 'file1.php'; echo $file1; // This outputs 'somevalue'. ?> 

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

 // Create an output buffer which will take in everything written to // stdout(ie everything you `echo`ed or `print`ed) ob_start() // Go to the file require_once 'file.php'; // Get what was in the file $output = ob_get_clean(); 

Если вы хотите, чтобы

 <?php $URL = 'http://www.example.com/'; $homepage = file_get_contents($URL); echo $homepage; ?> 

Попробуйте этот код

myfile1.php

 <?php echo file_get_contents("http://domainname/myfile2.php"); ?> 

myfile2.php

 <?PHP $myvar="prashant"; echo $myvar; ?>