Я хочу получить содержимое файла .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.
благодаря
Для этого вы можете использовать директиву 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
Я всегда стараюсь избегать функций 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; ?>