使用PHP在javascript中为mailto编码字符

using php to encode characters for mailto in javascript?

本文关键字:mailto 编码字符 中为 javascript PHP 使用      更新时间:2023-09-26

我使用window.location.href = 'mailto:?body=visit http://example.com/?content=link';

工作得很好,但链接的建立方式是window.location.href = 'mailto:?body=<?php echo $content; ?>';

现在这工作得很好,除非$content包含'或类似的东西打破了代码。

我怎样才能使它工作?

使用rawurlencode函数[php docs]对输入中url中无效的任何字符进行编码。

<?php $content = "Hello, this' an...'n'nexample!"; ?>
window.location.href = "mailto:?body=<?php echo rawurlencode($content); ?>";
输出:
window.location.href = "mailto:?body=Hello%2C%20this%27%20an...%0A%0Aexample%21";

这是真的,你通常会想要使用addslashes [php docs]当你把一些东西在引号字符串。在本例中,它没有任何作用,因为rawurlencode的输出没有任何需要用斜杠转义的字符。

您可能需要使用addslashes,它可以转义引号

使用rawurlencode():

window.location.href = 'mailto:?body=<?php echo rawurlencode($content); ?>';