Я хочу вызвать 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, он получит результат скрипта.