我试图在 HTML 中将“<”/">”显示为字符串而不是标签。
我有一个包含用户全名和电子邮件的数据库,当我想同时显示它们时,我的格式如下:
Christian Eric Paran <CEPexample@yahoo.com>
但我它只显示如下:
Christian Eric Paran
有没有办法在 PHP 的 HTML 中显示这个?
我试图在 HTML 中将“<”/">”显示为字符串而不是标签。
我有一个包含用户全名和电子邮件的数据库,当我想同时显示它们时,我的格式如下:
Christian Eric Paran <CEPexample@yahoo.com>
但我它只显示如下:
Christian Eric Paran
有没有办法在 PHP 的 HTML 中显示这个?
使用字符引用在 HTML 中表示具有特殊含义的字符(<
→ <
& &
→&
是您在文本节点中需要担心的字符)。
该htmlspecialchars
函数将为您转换。
print htmlspecichars("Christian Eric Paran <CEPexample@yahoo.com>");
问题是,<
and>
被 HTML 用来分隔标签。因此,电子邮件地址最终会被解析为 HTML 标记,并最终被大多数浏览器隐藏。
用于在 HTML<
中显示 a <
,>
用于>
.
如果数据将是动态的,请在打印之前使用htmlentities
或为您执行上述编码。htmlspecialchars
您需要将htmlspecialchars 转换为适当的 HTML 实体 - 例如 ' <
'
由于您正在处理电子邮件地址,因此您肯定需要一些灵活性来处理如何显示结果,而不仅仅是隐藏标签
我会推荐 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;
}