【问题标题】:Trying to encapsulate an email in <>试图将电子邮件封装在 <> 中
【发布时间】:2016-02-06 03:33:33
【问题描述】:

我正在尝试从数据库中提取名字、姓氏和电子邮件,并尝试使用 PHP 将其放入 Firstname Lastname 中。每次我尝试回显数据时,我只会得到 Firstname Lastname。电子邮件和 不显示?任何人都知道我该如何回应。

代码如下:

while($row = mysqli_fetch_assoc($res)){
     echo      $row['firstname'] . " " . $row['lastname'] . " <" . $row['email'] . ">,";
}

【问题讨论】:

    标签: php


    【解决方案1】:

    您的代码运行良好,但 &lt;&gt; 字符构成 HTML 标记,这就是您看不到邮件的原因。

    如果您查看 echo 的源代码,您会看到 &lt;mail&gt; 出现。


    你也可以这样做:

    while($row = mysqli_fetch_assoc($res)){
         echo      htmlspecialchars($row['firstname'] . " " . $row['lastname'] . " <" . $row['email'] . ">,");
    }
    

    htmlspecialchars 会将 &lt;&gt; 转换为它们的 HTML 代码,因此即使您没有查看源代码,它们也会可见。


    一个有用的功能是这个:

    // Echoes the string in a HTML friendly way
    function echoHTML($str)
    {
        echo htmlspecialchars($str);
    }
    
    while($row = mysqli_fetch_assoc($res)){
        echoHTML($row['firstname'] . " " . $row['lastname'] . " <" . $row['email'] . ">,");
    }
    

    PS:如果你想连接电子邮件地址,请注意最后一个逗号,你将在邮件列表的末尾有一个尾随,。以下是如何避免它:

    $adresses = [];
    while($row = mysqli_fetch_assoc($res))
    {
        // No more "," here
        $adresses[] = $row['firstname'] . " " . $row['lastname'] . " <" . $row['email'] . ">";
    }
    
    echoHTML(implode(', ', $adresses));
    

    【讨论】:

    • 感谢您的所有帮助。我找到了 的 ascii 代码
    • 我按照您的建议使用 htmlspecialchars 进行了尝试,但邮件功能不允许我发送。我在我的本地服务器上试过它,它工作得很好。我正在使用 Godaddy 服务器
    • 这很正常。 htmlspecialchars 仅用于帮助您在屏幕上显示值。用它来直观地确保你对字符串做了正确的事情,但不要在 mail 函数中使用它。
    • 一切看起来都很好。我需要能够通过这种格式发送。是否有一些我缺少的 Godaddy 邮件服务器的特殊代码?
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多