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

Require/include в переменную

Я хочу потребовать/включить файл и загрузить его содержимое в переменную.

test.php

<?php
echo "seconds passed since 01-01-1970 00:00 GMT is ".time();
?>

index.php

<?php
$test=require("test.php");
echo "the content of test.php is:<hr>".$test;
?>

Подобно file_get_contents(), но он все равно должен выполнять PHP-код. Возможно ли это?

4b9b3361

Ответ 1

У меня также был этот вопрос один раз, попробуйте что-то вроде

<?php
function requireToVar($file){
    ob_start();
    require($file);
    return ob_get_clean();
}
$test=requireToVar($test);
?>

Ответ 2

Если ваш включенный файл возвратил переменную...

include.php

<?php
return 'abc';

... тогда вы можете присвоить его переменной, подобной этой...

$abc = include 'include.php';

В противном случае используйте буферизацию вывода.

ob_start();
include 'include.php';
$buffer = ob_get_clean();

Ответ 3

Вы можете записать во включенный файл:

<?php
    return 'seconds etc.';

И в файл, из которого вы включаете:

<?php
    $text = include('file.php'); // just assigns value returned in file

Ответ 4

В PHP/7 вы можете использовать самозапускающуюся анонимную функцию для выполнения простой инкапсуляции и предотвращения глобального заражения со случайными глобальными переменными:

return (function () {
    // Local variables (not exported)
    $current_time = time();
    $reference_time = '01-01-1970 00:00';

    return "seconds passed since $reference_time GMT is $current_time";
})();

Альтернативным синтаксисом для PHP/5.3 + будет:

return call_user_func(function(){
    // Local variables (not exported)
    $current_time = time();
    $reference_time = '01-01-1970 00:00';

    return "seconds passed since $reference_time GMT is $current_time";
});

Затем вы можете выбрать имя переменной, как обычно:

$banner = require 'test.php';

Ответ 5

Используйте shell_exec("php test.php"). Он возвращает результат выполнения.

Ответ 6

require/include не возвращает содержимое файла. Вам нужно будет сделать отдельные звонки, чтобы достичь того, что вы пытаетесь сделать.Забастовкa >

ИЗМЕНИТЬ

Использование echo не позволит вам делать то, что вы хотите. Но возврат содержимого файла будет выполнен, как указано в руководстве - http://www.php.net/manual/en/function.include.php

Ответ 7

Я думаю, eval(file_get_contents('include.php')) поможет вам. Помните, что на вашем хостинге можно отключить другой способ выполнения, например, shell_exec.

Ответ 8

Возможно, только если требуемый или включенный файл php возвращает что-то (массив, объект, строка, int, переменная и т.д.)

$var = require '/dir/file.php';

Но если это не php файл, и вы хотите оценить его содержимое, вы можете:

<?php

function get_file($path){

    return eval(trim(str_replace(array('<?php', '?>'), '', file_get_contents($path))));
}

$var = get_file('/dir/file.php');

Ответ 9

Или что-то вроде этого

в файле include.php:

<?php
  //include.php file
  $return .= "value1 ";
  $return .= time();

в другом файле php (не важно, что является содержимым этого файла):

<?php
  // other.php file
  function() {
    $return = "Values are: ";
    include "path_to_file/include.php";

    return $return;
  }

return будет выглядеть так:

Values are: value1, 145635165

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