【问题标题】:Inserting HTML tags inside a PHP variable [duplicate]在 PHP 变量中插入 HTML 标签 [重复]
【发布时间】:2013-09-17 13:41:27
【问题描述】:

我有以下代码:

function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "First Name: ".'<strong>'.clean_string($cname).'</strong>'."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";

然后发送我的电子邮件,我希望电子邮件的第一行是:

名字:输入的名字

但我得到的是:

名字:&lt;strong&gt; 输入的名字&lt;/strong&gt;

知道为什么 html 标签不被理解吗?

非常感谢

【问题讨论】:

  • 您使用的是哪个邮件功能?
  • 您必须将MIME type 设置为 text/html

标签: php html


【解决方案1】:

您必须将您的电子邮件定义为“HTML”:

 $headers  = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

 // Send...
 mail($to, $subject, $message, $headers);

【讨论】:

  • 您选择iso-8859-1 作为字符集有什么具体原因吗?
  • 这就是PHP Manual 的用途。所以这一定不是一个糟糕的选择。
  • 不具体,实际上,只是从我的一个旧代码中复制和粘贴(我可能以前从其他地方拿过这个)......我认为现在最好使用UTF-8 ,例如...
  • 非常感谢,这行得通:) 你如何更改为 UTF-8,是吗: $headers .= 'Content-type: text/html;字符集=UTF-8' 。 "\r\n";对吗?
  • @LuizaRios 是的,它的。
【解决方案2】:

它给出了一个错误,因为您在字符串中使用了特殊字符。使用 htmlspecialchars 函数,您可以将它们转换为 html,然后就没有问题了。 htmlspecialchars 将在您的情况下转义

更多信息可以在 php 文档中找到 http://fi2.php.net/manual/en/function.htmlspecialchars.php

【讨论】:

    【解决方案3】:

    默认情况下,电子邮件以文本电子邮件的形式发送。

    要使电子邮件客户端将电子邮件正文解释为 HTML,您需要以正确的格式传递正文,这由 Content-Type 字段指示:

    Content-Type: text/html; charset=iso-8859-1
    

    您可以在 PHP 的 mail() functionadditional headers 参数中插入此字段。

    关于如何使用 PHP 发送 HTML 电子邮件,请参见上述链接中的示例 #4。

    【讨论】:

      猜你喜欢
      • 2022-11-21
      • 2021-08-14
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 2018-03-04
      相关资源
      最近更新 更多