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

Require_once для переменной

Я хочу вызвать require_once ( "test.php" ), но не отображать результат и сохранить его в переменной следующим образом:

$test = require_once('test.php');

//some operations like $test = preg_replace(…);

echo $test;

Решение:

test.php

<?php
$var = '/img/hello.jpg';

$res = <<<test

<style type="text/css">
body{background:url($var)#fff !important;}
</style>

test;

return $res;
?>

main.php

<?php
$test = require_once('test.php');

echo $test;
?>
4b9b3361

Ответ 1

Возможно ли это?

Да, но вам нужно сделать явный return в требуемом файле:

//test.php

<? $result = "Hello, world!"; 
  return $result;
?>

//index.php

$test = require_once('test.php');  // Will contain "Hello, world!"

Это редко полезно - проверьте ответ на основе выходного буфера Konrad или adam file_get_contents one - они, вероятно, лучше подходят для того, что вы хотите.

Ответ 2

"Результат", по-видимому, является строковым выходом?

В этом случае вы можете использовать ob_start для буферизации указанного вывода:

ob_start();
require_once('test.php');
$test = ob_get_contents();

РЕДАКТИРОВАТЬ Из отредактированного вопроса это похоже на то, что вы хотите иметь функцию внутри включенного файла. В любом случае это, вероятно, будет (намного!) Более чистым решением:

<?php // test.php:

function some_function() {
    // Do something.
    return 'some result';
}

?>

<?php // Main file:

require_once('test.php');

$result = test_function(); // Calls the function defined in test.php.
…
?>

Ответ 3

file_get_contents получит содержимое файла. Если он на том же сервере и ссылается по пути (а не на url), он получит содержимое test.php. Если он удален или ссылается на url, он получит вывод script.