试图在<>中封装电子邮件

时间:2015-11-05 10:28:41

标签: php

我试图从数据库中提取名字,姓氏和电子邮件,然后尝试使用PHP输入名字姓氏。每当我尝试回显数据时,我只会获得名字姓氏。电子邮件和<>没有出现?任何人都知道如何回应。

以下是代码:

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

1 个答案:

答案 0 :(得分:0)

您的代码运行正常,但<>字符组成了HTML标记,这就是您看不到邮件的原因。

如果您查看回音的源代码,您会看到<mail>出现。

你也可以这样做:

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

htmlspecialchars会将<>转换为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));