将PHP设置为包含文件

时间:2011-11-03 02:33:10

标签: php html css

我有一个PHP脚本内的电子邮件模板。我正在使用PHPmailer,发送的消息存储在名为$msg的变量中。

如何将$msg设置为电子邮件模板包含文件?我希望有一种方法可以使用包含文件动态执行此操作,这样我就不必在不同的脚本中存储20个模板副本。

6 个答案:

答案 0 :(得分:3)

不确定我是否正确理解你,但为什么你不能这样做呢?

include_once('filename.php');

答案 1 :(得分:3)

您有多种方法,我将在下面提及其中的三种方法。

解决方案号1 - 简单包含

首先,如果您包含类似以下示例的文件:

include('myfile.php');

它的代码将被执行,就像它被粘贴而不是上面提到的行一样。因此,如果您要在myfile.php中添加值声明,则该变量将在include()函数调用之后可用(如上所述)。

所以,基本上,你可以在myfile.php文件中执行类似的操作:

<?php

$msg = 'my template';

并在$msg调用主文件后的任何地方使用include()变量(除非变量已被覆盖)。

解决方案号2 - 使用return

包含

在某些情况下使用,例如。当您只包含包含您要使用的某些值的文件时(文件的主要目的是提供一些值进行处理),您可能希望使用以下示例。它不应该干扰您当前的变量(如果使用正确)。

在主文件中:

$msg = include('myfile.php');

并在myfile.php文件中:

<?php

return 'my template';

这样,您的文件只能通过返回特定变量来工作,并且不会破坏其他文件的命名约定。您也可以随意调用变量,而无需更改配置文件的内容。

解决方案号3 - 输出缓冲

在某些情况下(杂乱的编码,HTML等),您可能需要使用此解决方案。以下代码捕获文件发出的所有内容并将其保存到变量 $msg中,然后关闭缓冲区。

ob_start();
include('myfile.php');
$msg = ob_end_flush();

这样,如果你有例如。 echo调用或一些静态HTML,在包含的文件中,它不会“按原样”编写,并且可以进一步处理(例如,您的模板中的某些标记可​​能会被您要使用的实际数据替换) )。

所以,基本上,在这种情况下,您甚至可以在myfile.php中写下:

<?php

echo 'my template';

甚至:

my template

(只是一个文本,而不是PHP代码)。

答案 2 :(得分:0)

您可以在PHP脚本中使用$msg = "…";并在必要时包含此内容。但是,如果它只是纯文本,您可以考虑将其保存为.txt文件并使用file_get_contents

答案 3 :(得分:0)

您可以在模板文件中写下:

$msg = """ the message
bla bla bla""";

然后,当您从另一个php模块中包含该文件时,您可以访问此变量。

答案 4 :(得分:0)

您可以将其保存到原始文本文件中并使用file_get_contents加载它,或者将包含文本的字符串保存在另一个php文件中并包含它。

示例:

的template.php:

<?php
$globalMessage = "template string goes here";
?>

其他所有文件:

<?php
include 'Template.php';
echo $globalMessage; // has access
?>

答案 5 :(得分:0)

如果要将模板文件的内容放入$ msg变量中,可以执行以下操作:

<?php
 $msg= get_include_contents('email_template_file.php');

 function get_include_contents($filename) {
 if (is_file($filename)) {
    ob_start();
    include $filename;
    return ob_get_clean();
 }
 return false;
 }

 ?>

现在您的$ msg变量包含您的电子邮件的文本。如果您有一些通用术语,如用户名,电话号码等,您希望对不同的用户有所不同。将它们存储在模板文件中的{username},{phone-number}等令牌中。获得$ msg变量中的内容后,您可以使用以下内容:

<?php str_replace('{username}',$username,$msg); ?>

为要发送邮件的每个用户动态更改值。