对 mailto 链接的字符串进行转义的正确方法是什么?

2022-08-30 17:10:19

我在这里的页面中有一个链接,包括和参数,但我不确定如何正确转义参数中的数据。mailto:subject=body=

该页面是编码的,所以我想所有特殊字符(如德语元音变音符)也应该编码为URL的表示形式?utf-8utf-8

目前,我正在使用在空格应该存在的所有位置插入字符,但我不确定这是否是正确的方法。rawurlencode()urlencode()+


答案 1

您只需要根据W3C标准在电子邮件地址末尾的链接。rawurlencode()

PHP手册上有一个urlencode的例子(在该页面上搜索mailto):http://php.net/manual/en/function.urlencode.php


答案 2

根据接受的答案和它的评论,这是我使用的:

function format_text_for_mailto_param($text) {
    return rawurlencode(htmlspecialchars_decode($text));
}

例:

$email = "someone@example.org";
$subject = "Test Subject";
<a href="mailto:' . $email . '?subject=' . format_text_for_mailto_param($subject) . '">send email</a>

推荐