邮寄地址链接我即逃避PHP
<a href="mailto:[email protected]?subject=<?php rawurlencode(Travels & Tours) ?>&body=this is body">link text</a>
在我的PHP代码一个mailto链接的问题是当它出现在电子邮件客户端如Outlook中的主题行文本更改为Travels & Tours
邮寄地址链接我即逃避PHP
<a href="mailto:[email protected]?subject=<?php rawurlencode(Travels & Tours) ?>&body=this is body">link text</a>
在我的PHP代码一个mailto链接的问题是当它出现在电子邮件客户端如Outlook中的主题行文本更改为Travels & Tours
即
<a href="mailto:[email protected]?subject=<?php html_entity_decode(Travels & Tours) ?>&body=this is body">link text</a>
严格地说,你应使用urlencode()
对URL参数值进行URL编码,而不是rawurlencode()
,该编码用于对URL的URL路径部分进行编码。虽然这两个函数产生类似的结果,但有差异。网址的不同部分有不同的限制。值得注意的是(从你的例子),空间被编码为在URL参数值+
,而他们被编码为在URL路径%20
(虽然这并没有真正在大多数情况下均可)。
除了URL,以进行有效编码的请求的URL,你可能还需要HTML实体编码整个HTML属性,以使其有效的HTML(但是,HTML5是那么严格)。 (浏览器,然而,相当宽容,并且很可能会自动HTML实体编码是必要的。但是,这可能并不总是正确地运行和安全原因,URL,你应该确保你产生任何HTML已经被正确编码。)
所以,理想情况下,你应该做类似如下:
<?php
$subject = urlencode('Travels & Tours');
$body = urlencode('body is body');
$url = htmlspecialchars("mailto:[email protected]?subject=$subject&body=$body");
?>
<a href="<?=$url?>">link text</a>
这将导致以下HTML:
<a href="mailto:[email protected]?subject=Travels+%26+Tours&body=body+is+body">link text</a>
但是,这可能仍然无法解决您的问题,并可能取决于浏览器/电子邮件c lient - 因为URL参数在被电子邮件客户端处理之前必须正确的HTML实体和URL解码。上面的工作对我来说很合适,但是您的原始示例也是如此(一旦PHP语法被更正)。
电子邮件客户端中,他们可以处理哪些相对简单,所以它通常是你需要搏斗的电子邮件客户端。就个人而言,我会避免在开头的电子邮件中使用&
。
你已经发布的代码是无效的PHP代码。请纠正这一点,否则,我们不一定知道你的问题是什么。 – MrWhite