我有一个PHP代码,可以呈现mailto:
链接
echo "<a href='mailto:?'". http_build_query([
'subject' => 'this is a subject',
'body' => 'this is a body',
])."'>Link</a>";
在我的桌面浏览器中,当我点击链接时,浏览器转到GMail,邮件正文很好。
但是当我使用我的iPhone时,撰写应用程序会显示&#34; +&#34;而不是空格。
我该如何避免这种情况?
答案 0 :(得分:1)
这是标准的URI代码。预计空间将转变为空间以外的其他空间。最常见的角色是&#39; +&#39;,有些人更喜欢使用%20。
解码URI时,它会自动替换&#39; +&#39;回到空间。所以你的代码可能缺少一个调用......
你可能想看看这个功能:
http://us1.php.net/manual/en/function.urldecode.php
根据scrowler评论,尝试使用%20而不是空格来查看会发生什么:
echo "<a href='mailto:?'". http_build_query([
'subject' => 'this%20is%20a%20subject',
'body' => 'this%20is%20a%20body',
])."'>Link</a>";
答案 1 :(得分:0)
要构建与 Apple 邮件兼容的 mailto http 查询字符串,并且不将空格显示为 +
加号,您需要在 {{} 中使用 encoding_type
参数3}} 函数并将其设置为常量 PHP_QUERY_RFC3986
,以便使用 %20
而不是 +
对空格进行编码。
构建mailto查询字符串:
$mailToParams = http_build_query(
[
'subject' => "The Subject!",
'body' => "Here's the body of the message. \n\nAdd in a couple new lines."
],
null,
'&',
PHP_QUERY_RFC3986
);
将其添加到您的链接:
<a href="mailto:info@example.com?<?php echo $mailToParams; ?>">Mail Me</a>