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; ?> 

Является ли это возможным?

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

 //test.php <? $result = "Hello, world!"; return $result; ?> //index.php $test = require_once('test.php'); // Will contain "Hello, world!" 

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

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

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

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

EDIT Из отредактированного вопроса он выглядит так, как будто вы хотите иметь функцию внутри включенного файла. В любом случае, это, вероятно, будет (намного!) Более чистым решением:

 <?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. … ?> 

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