输出“<”/“>” HTML中的字符

时间:2012-05-08 15:19:30

标签: php html special-characters

我正在尝试显示“<”/“>”作为HTML中的字符串而不是标记。

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

Christian Eric Paran <CEPexample@yahoo.com>

但我只显示如下:

Christian Eric Paran

有没有办法在PHP中用HTML显示它?

4 个答案:

答案 0 :(得分:4)

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

character references功能会为您转换。

print htmlspecichars("Christian Eric Paran <CEPexample@yahoo.com>");

答案 1 :(得分:3)

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

使用&lt;在HTML中显示<,在&gt;显示>

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

答案 2 :(得分:2)

您需要将htmlspecialchars转换为相应的HTML实体,例如“&lt;

答案 3 :(得分: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;
}