我有一个由某些php函数生成的html电子邮件,并从数据库中的几个表中收集并组织成一个html布局..现在它都在一个preview.php页面中用于测试布局但是当我需要时发送给订阅者,我需要获取从此页面生成的HTML代码,并将该代码发送到电子邮件中。我的意思是页面源我看到的当我右键单击页面然后单击查看源..那我怎么得到这个页面来源?或将其保存到某个变量中以使用它?
答案 0 :(得分:4)
选项1:
使用file_get_contents(),因为它以字符串形式返回文件:
$html = file_get_contents('preview.php')
您的整个html现在以字符串形式保存在$html
变量中。
选项2:
如果您的preview.php包含一些PHP处理,您可以改为执行此操作(以便执行PHP代码,并且仍然可以获得生成的html):
ob_end_clean();
ob_start();
include('preview.php');
$html = ob_get_contents();
ob_end_clean();
同样,您的整个html现在作为字符串保存在$html
变量中。
答案 1 :(得分:2)
您应该使用PHP生成html,然后在回显之前将其保存在会话变量中。
像
这样的东西$html = <<<HTML
<html>
<-- Here you have the full html of the page -->
</html>
HTML;
session_start();
$_SESSION['html'] = $html;
echo $html;
然后当您想发送电子邮件时,您只需
$message = $_SESSION['html'];
答案 2 :(得分:0)
你想要的东西对我来说有点奇怪(为什么不把它变成一个变量而不是回应呢?)
无论如何,看看ob_start&amp; ob_get_contents函数
答案 3 :(得分:0)
正确的方法是让preview.php执行此操作:
$html = '';
$html .= '<div>';
$html .= 'Text within div';
$html .= '</div>';
// etc
echo $html;
// Do other stuff with $html
但是如果你只是想要懒惰的方式,让preview.php做一个echo语句,那就这样做:
ob_start();
// Make the HTML using echo
$html = ob_get_contents();
ob_end_clean();