在mailto链接中避免将空格更改为iPhone中的加号

时间:2014-08-14 02:57:22

标签: php

我有一个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;而不是空格。

我该如何避免这种情况?

2 个答案:

答案 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>