sprintf()

时间:2019-01-23 10:08:00

标签: php printf

我在PHP中有一个小问题,但似乎找不到对此的解释。

我有一个简单的sprintf来撰写电子邮件标题:

$mail_to = sprintf('%s %s <%s>', 'Harry', 'Potter', 'h.potter@example.com');

但这只是存储Harry Potter,似乎忽略了<>字符之间的任何内容。正确删除<>会产生Harry Potter h.potter@example.com

我检查了PHP手册中的函数,但未提及有关这些字符的任何问题。我也尝试按照类似问题中的建议,使用%使其逃脱,但似乎不需要转义。

很显然,我可以使用.链接简单的字符串来实现这一目标,并且可能会这样做。但是我仍然很好奇为什么会这样。

提前感谢您的时间!

1 个答案:

答案 0 :(得分:4)

因此,正在发生的情况是您的浏览器(Chrome,IE,Sarafi等)认为方括号之间的内容是HTML标记。试试这个:

$mail_to = sprintf('%s %s &lt;%s&gt;', 'Harry', 'Potter', 'h.potter@example.com');

看看是否可行。