我正在尝试显示“<”/“>”作为HTML中的字符串而不是标记。
我有一个包含用户的全名和电子邮件的数据库,当我想要显示它们时我都有这样的格式:
Christian Eric Paran <CEPexample@yahoo.com>
但我只显示如下:
Christian Eric Paran
有没有办法在PHP中用HTML显示它?
答案 0 :(得分:4)
使用{{在HTML中表示具有特殊含义的字符(<
→<
&amp; &
→&
是您需要在文本节点中担心的字符) 3}}
character references功能会为您转换。
print htmlspecichars("Christian Eric Paran <CEPexample@yahoo.com>");
答案 1 :(得分:3)
问题是,HTML使用<
和>
来分隔标记。因此,电子邮件地址最终被解析为HTML标记,并且最终被大多数浏览器隐藏。
使用<
在HTML中显示<
,在>
显示>
。
如果数据是动态的,请在打印前使用htmlentities
或htmlspecialchars
为您执行上述编码。
答案 2 :(得分:2)
您需要将htmlspecialchars转换为相应的HTML实体,例如“<
”
答案 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;
}