在PHP字符串中存储HTML标记

时间:2014-03-22 15:38:18

标签: php html

我正在尝试使用PHP创建电子邮件自动化。最初我有这个:

function send_email($email) {
    $message = "Hello! Here is an email message";
    mail($email, "Subject Line", $message, "from: email@ouremail.co.uk");
}

但是我希望通过电子邮件发送消息的时间更长,并包含一些HTML标记(简单的h1和p标记)。

我是PHP的新手,但是可以找到有关如何在HTML中输出PHP的信息,而不是如何在PHP变量中包含HTML。我需要能够将标记存储在$message

另一件事我无法理解。如果我想在我的HTML中写出don't之类的字词,那么我就无法使用“'”来打开和关闭。我必须改用"。它是否正确?

ETA:无论如何通过此功能发送整个HTML文件?所以我可以为电子邮件创建一个漂亮的模板,然后通过电子邮件发送.html文件。

1 个答案:

答案 0 :(得分:3)

不要忘记设置邮件标题以支持HTML。

就PHP而言,它几乎是标准的:

$message = "<div>Hello! Here is an <span class='myClass'>email</span> message</div>";

另请阅读heredoc和nowdoc:http://www.php.net/manual/en/language.types.string.php。在编写长多行消息时,他们将非常有用。例如:

$message = <<<EOT
Hello!
Here is an <span class='myClass'>email</span> message!
EOT;

对于引号,您需要使用反斜杠进行转义,如下所示:

$message = "Hello, \"people\"! Don't you know this is an email message";

$message = 'Hello, "people"! Don\'t you know this is an email message';

请注意,使用双引号解析字符串中的PHP变量:

$x = 'world';
$message = "Hello $x"; // outputs: Hello world
$message = 'Hello $x'; // outputs: Hello $x

您可能还想考虑在PHP字符串中编码/解码HTML实体。这是一个好的开始:http://php.net/htmlentities

关于模板,您始终可以创建包含模板消息的函数或包含文件,然后使用每条消息的自定义数据进行装饰。有很多方法可以实现这一目标。