我正在尝试通过PHP的email()函数发送凭证,我使用include()作为消息内容引用外部.php文件。下面是代码:
$message = '<?php include ("/fullpath/inc/voucher.php"); ?>';
这不起作用,因为我将它声明为文本字符串,但如果我不这样做,它将打印出内容而不是将其作为变量的内容。有什么想法吗?
答案 0 :(得分:3)
您可以使用ob_buffer,试试这个:
<?php
ob_start(); // start buffer
include("file.php"); // read in buffer
$var=ob_get_contents(); // get buffer content
ob_end_clean(); // delete buffer content
echo $var; // use $var
?>
来自http://www.webmaster-eye.de/include-in-Variable-umleiten.210.artikel.html(德语)
的示例答案 1 :(得分:3)
在这篇文章中,将根据具体情况描述两种解决方案。
voucher.php
返回值如果voucher.php中有return语句,您可以安全地使用include
来获取此返回值。
见下面的例子:
<强> voucher.php 强>
<?php
$contents = "hello world!";
...
return $contents;
?>
...
$message = include ("/fullpath/inc/voucher.php");
voucher.php
正在打印我想要存储在变量如果voucher.php
正在打印您要存储在变量中的数据,则可以使用php的output buffering函数存储打印的数据,然后将其分配给$message
。< / p>
ob_start ();
include ("/fullpath/inc/voucher.php");
$message = ob_get_contents ();
ob_end ();
答案 2 :(得分:1)
ob_start();
include ("/fullpath/inc/voucher.php");
$message = ob_get_clean();
然而,在大多数情况下,输出缓冲被认为是不好的做法,不建议使用
与你的情况一样,你最好在voucher.php
中声明一个以字符串形式返回消息的函数。所以所有代码都可以这么简单:$message = get_voucher();
答案 3 :(得分:1)
我遇到了同样的问题,这里有解决问题的功能。它使用Tobiask答案
function call_plugin($target_) { // $target_ is the path to the .PHP file
ob_start(); // start buffer
include($target_); // read in buffer
$get_content = ob_get_contents(); // get buffer content
ob_end_clean();
return $get_content;
}
答案 4 :(得分:0)
$message = include '/fullpath/inc/voucher.php';
并在/fullpath/inc/voucher.php
// create $string;
return $string;
答案 5 :(得分:0)
您想使用readfile()
功能而不是包含。
请参阅:http://en.php.net/manual/en/function.readfile.php
如果你想得到解析voucher.php的PHP的= results =,一种方法是确保你将voucher.php放在一个可到达的URL上,然后调用它:
$message = file_get_contents("http://host.domain.com/blabla/voucher.php");
这会将解析后的voucher.php的内容/输出插入到变量$ message中。
如果你无法公开地访问voucher.php,你必须重写它以使用return()函数输出最后的字符串,或者在voucher.php中编写一个函数,该函数在调用后输出你想要的字符串你包括()它并从这个主PHP脚本中调用该函数。
答案 6 :(得分:-1)
$message=file_get_contents("/fullpath/inc/voucher.php");