Ответ 1
Для этого вы можете использовать директиву include.
Файл 2:
<?php
$myvar="prashant";
?>
Файл 1:
<?php
include('myfile2.php');
echo $myvar;
?>
Я хочу получить содержимое файла .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;
?>
Вы должны различать две вещи:
echo
, print
,...) включенного файла и использовать вывод в переменной (строке)?Локальные переменные в ваших включенных файлах всегда будут перемещены в текущую область вашего хоста script - это следует отметить. Вы можете объединить все эти функции в один:
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
-feature пригодится, особенно при использовании файлов конфигурации.
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()
'ed с включенной страницы, вы можете рассмотреть возможность использования буферизации вывода:
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(i.e. 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;
?>