2

我试图在 HTML 中将“<”/">”显示为字符串而不是标签。

我有一个包含用户全名和电子邮件的数据库,当我想同时显示它们时,我的格式如下:

Christian Eric Paran <CEPexample@yahoo.com>

但我它只显示如下:

Christian Eric Paran

有没有办法在 PHP 的 HTML 中显示这个?

4

4 回答 4

5

使用字符引用在 HTML 中表示具有特殊含义的字符(<&lt;& &&amp;是您在文本节点中需要担心的字符)。

htmlspecialchars函数将为您转换。

print htmlspecichars("Christian Eric Paran <CEPexample@yahoo.com>");
于 2012-05-08T15:21:15.107 回答
4

问题是,<and>被 HTML 用来分隔标签。因此,电子邮件地址最终会被解析为 HTML 标记,并最终被大多数浏览器隐藏。

用于在 HTML&lt;中显示 a <&gt;用于>.

如果数据将是动态的,请在打印之前使用htmlentities或为您执行上述编码。htmlspecialchars

于 2012-05-08T15:21:22.807 回答
2

您需要将htmlspecialchars 转换为适当的 HTML 实体 - 例如 ' &lt;'

于 2012-05-08T15:21:30.240 回答
0

由于您正在处理电子邮件地址,因此您肯定需要一些灵活性来处理如何显示结果,而不仅仅是隐藏标签

我会推荐 http://php.net/mailparse_rfc822_parse_addresses

   $email = mailparse_rfc822_parse_addresses("Christian Eric Paran <CEPexample@yahoo.com>") ;
   echo $email[0]['display'] ; // Christian Eric Paran
   echo $email[0]['address'] ; // CEPexample@yahoo.com

如果您没有安装邮件解析,您可以使用它

$email = parse_addresses ( "Christian Eric Paran <CEPexample@yahoo.com>" );
echo $email ['display']; // Christian Eric Paran
echo $email ['address']; // CEPexample@yahoo.com

parse_addresses功能

function parse_addresses($address) {
    $info = array ();
    preg_match_all ( '/\s*"?([^><,"]+)"?\s*((?:<[^><,]+>)?)\s*/', $address, $matches );
    $info ['display'] = $matches [1] [0];
    $info ['address'] = str_replace ( array (
            "<",
            ">" 
    ), "", $matches [2] [0] );

    return $info;
}
于 2012-05-08T15:31:37.227 回答