Javascript 允许'&';mailto href链接中的字符

Javascript 允许'&';mailto href链接中的字符,javascript,php,html,href,mailto,Javascript,Php,Html,Href,Mailto,我有一个电子邮件mailtohref链接,当我在主题中使用&字符时,这将防止在电子邮件主题行中的该符号后出现任何代码呈现。i、 e.Oil&Gas,仅显示为Oil 在正常情况下,我只需将&更改为单词和,但主题行是通过Wordpress中的帖子标题动态生成的 有人知道如何防止主题行中断,或者换句话说,如何使&显示为文本字符吗 代码的精简版本如下所示: <a href="mailto:joe@example.com?subject=Oil&Gas">Apply</a>

我有一个电子邮件
mailto
href链接,当我在主题中使用
&
字符时,这将防止在电子邮件主题行中的该符号后出现任何代码呈现。i、 e.
Oil&Gas
,仅显示为
Oil

在正常情况下,我只需将
&
更改为单词
,但主题行是通过Wordpress中的帖子标题动态生成的

有人知道如何防止主题行中断,或者换句话说,如何使
&
显示为文本字符吗

代码的精简版本如下所示:

<a href="mailto:joe@example.com?subject=Oil&Gas">Apply</a>

尽管在网站的HTML中,这是通过以下方式拉入的:

<a href="mailto:<?php echo $author_email;?>?subject=<?php the_title(); ?>">Apply</a>


任何帮助或想法都会非常好,我不确定这是html、php还是Javascript解决方案?

您可以使用
urlencode
函数对字符串进行转义,以便安全使用,如下所示:

<a href="mailto:<?php echo $author_email;?>?subject=<?php echo urlencode(the_title()); ?>">Apply</a>

您需要输入标题

<?php
$title = "Gas&Oil";
?>
<a href="mailto:a@mail.com?subject=<?= urlencode($title); ?>">Apply</a>

但是,这将对整个标题进行编码,更改不需要编码的其他字符。因此,为了避免这种情况,只需将
%26
替换为
&

<a href="mailto:a@mail.com?subject=<?=str_replace("&", "%26", the_title()); ?>">Apply</a><br> <!-- doesn't work -->
<a href="mailto:a@mail.com?subject=<?=str_replace("&", "%26", get_the_title()); ?>">Apply</a> <!-- works -->


尝试将与符号替换为“%26”或“&”:




使用PHP组合:
str_replace('&;','%26',rawurlencode(htmlspecialchars_decode(the_title()))

问题是&字符需要在URL中转义,因为&被视为控制字符

您可以使用HTML编码来转义它。例如,
&
&
字符,
是不间断空格

在JavaScript中,可以使用“encodeURIComponent”作为主题和主体。然后它将在电子邮件中显示所有特殊字符

例如:

    const emailRequest = {
            to: "abc@xyz.com",
            cc: "abc@xyz.com",
            subject: "Email Request - for <CompanyName>",
            body: `Hi All, \r\n \r\n This is my company <CompanyName> 
            \r\n Thanks
        }

    const subject = encodeURIComponent(emailRequest.subject.replace("<CompanyName>",'ABC & ** Company'));
    const body = encodeURIComponent(emailRequest.body .replace("<CompanyName>", 'ABC & ** Company'));

    window.location.href = (`mailto:${emailRequest.to}?cc=${emailRequest.cc}&subject=${subject}&body=${body}`);
const emailRequest={
至:abc@xyz.com",
抄送:“abc@xyz.com",
主题:“电子邮件请求-申请”,
body:`大家好,\r\n\r\n这是我的公司
\r\n谢谢
}
const subject=encodeURIComponent(emailRequest.subject.replace(“,'ABC&**公司”);
const body=encodeURIComponent(emailRequest.body.replace(“,'ABC&**公司”);
window.location.href=(`mailto:${emailRequest.to}?cc=${emailRequest.cc}&subject=${subject}&body=${body}`);

URLEncode在PHP方面。相关:我撤回了我的重复投票,因为另一篇文章没有提到PHP。没有人再使用mailto链接了,垃圾邮件机器人也会以这种方式获取地址。创建表单并发送邮件that@nogad合理的担忧,但并不意味着
mailto
链接已过时。这可能适用于一个非面向公众的网站,在那里收获不是一个问题。这样做只会在主题行中添加大量不需要的字符串。“石油天然气仲裁合作伙伴”电子邮件的主题行现在是:石油+&+Gas+仲裁+合作伙伴然后只需将
&
替换为
%26
,以保留其他字符。见编辑。这几乎奏效,我只得到了随机的#038;现在在这个话题上?上面写着–Oil和#038;天然气仲裁合作伙伴–我将如何删除该#038;我非常感谢你迄今为止的帮助。嗯,这似乎与你的邮件客户有关。你在用什么?我用雷鸟
<a href="mailto:<?php echo $author_email;?>?subject=<?php str_replace('&', '%26', the_title()); ?>">Apply</a>
<a href="mailto:<?php echo $author_email;?>?subject=<?php echo str_replace('&amp;','%26',rawurlencode(htmlspecialchars_decode(the_title()))); ?>">Apply</a>
    const emailRequest = {
            to: "abc@xyz.com",
            cc: "abc@xyz.com",
            subject: "Email Request - for <CompanyName>",
            body: `Hi All, \r\n \r\n This is my company <CompanyName> 
            \r\n Thanks
        }

    const subject = encodeURIComponent(emailRequest.subject.replace("<CompanyName>",'ABC & ** Company'));
    const body = encodeURIComponent(emailRequest.body .replace("<CompanyName>", 'ABC & ** Company'));

    window.location.href = (`mailto:${emailRequest.to}?cc=${emailRequest.cc}&subject=${subject}&body=${body}`);