Подтвердить что ты не робот

Как выполнить и получить содержимое файла .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.

Спасибо

4b9b3361

Ответ 1

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

Файл 2:

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

Файл 1:

<?php 

include('myfile2.php');
echo $myvar;

?>

Ответ 2

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

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

Локальные переменные в ваших включенных файлах всегда будут перемещены в текущую область вашего хоста 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). Я бы сказал, что влияние производительности должно считаться довольно маленьким...

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

См. 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'.

?>

Ответ 6

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

// 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();

Ответ 7

Если вы хотите использовать весь сайт,

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

Ответ 8

Пожалуйста, попробуйте этот код

myfile1.php

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

myfile2.php

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