我有一个包含HTML标记的文档文件。我想将整个文件的内容分配给PHP变量。
我有这行代码:
$body = include('email_template.php');
当我执行var_dump()
时,我得到string(1) "'"
是否可以将文件内容分配给变量?
[注意:这样做的原因是我希望将邮件消息的正文段与邮件程序脚本分开 - 有点像模板,因此用户只需修改HTML标记,无需担心用我的邮件脚本。所以我将文件作为整个正文部分包含在mail($to, $subject, $body, $headers, $return_path);
感谢。
答案 0 :(得分:22)
如果需要执行PHP代码,则确实需要使用include
。但是,include
不会返回文件的输出;它将被发送到浏览器。您需要使用名为output buffering的PHP功能:它捕获脚本发送的所有输出。然后,您可以访问和使用此数据:
ob_start(); // start capturing output
include('email_template.php'); // execute the file
$content = ob_get_contents(); // get the contents from the buffer
ob_end_clean(); // stop buffering and discard contents
答案 1 :(得分:11)
您应该使用file_get_contents()
:
$body1 = file_get_contents('email_template.php');
include
在您当前的文件中包含并执行email_template.php
,并将include()
的返回值存储到$body1
。
如果你需要在文件中执行PHP代码,你可以使用output control:
ob_start();
include 'email_template.php';
$body1 = ob_get_clean();
答案 2 :(得分:2)
$file = file_get_contents('email_template.php');
或者,如果你疯了:
ob_start();
include('email_template.php');
$file = ob_end_flush();
答案 3 :(得分:1)
正如其他人发布的那样,如果不需要以任何方式执行该文件,请使用file_get_contents
。
或者,您可以使include返回带有return语句的输出。
如果你的include使用echo [ed:或离开PHP解析模式]语句进行处理和输出,你也可以缓冲输出。
ob_start();
include('email_template.php');
$body1 = ob_get_clean();
TimCooper打败了我。 :P
答案 4 :(得分:0)
尝试使用PHP的file_get_contents()
函数。
在此处查看更多内容:http://php.net/manual/en/function.file-get-contents.php
答案 5 :(得分:0)
是的,你可以轻松。
在您要使用变量的文件中放置此
require_once ‘/myfile.php';
if(isset($responseBody)) {
echo $responseBody;
unset($responseBody);
}
在您调用/myfile.php的文件中放置此
$responseBody = 'Hello world, I am a genius';
由于 丹尼尔
答案 6 :(得分:0)
您有两个可选选项
[选项1]
'email_template.php'
的文件在文件内添加这样的变量
$body = '<html>email content here</html>';
在另一个文件require_once 'email_template.php'
echo $body;
[选项2]
$body = require_once 'email_template.php';