我想调用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;
?>
答案 0 :(得分:27)
有可能吗?
是的,但您需要在所需文件中执行明确的return
:
//test.php
<? $result = "Hello, world!";
return $result;
?>
//index.php
$test = require_once('test.php'); // Will contain "Hello, world!"
这很少有用 - 检查Konrad的基于输出缓冲区的答案,或亚当的file_get_contents
- 它们可能更适合您想要的。
答案 1 :(得分:25)
“结果”可能是一个字符串输出?
在这种情况下,您可以使用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.
…
?>
答案 2 :(得分:3)
file_get_contents将获取该文件的内容。如果它位于同一服务器上并由path(而不是url)引用,则将获得test.php的内容。如果它是远程的或由url引用,它将获得脚本的输出。