将 ' 和其他转义字符输出到 HTML 的正确方法


Correct method to output ' and other escape characters to HTML

我目前有一个jquery函数,其中存储了预先编写的字符串,如下所示:

$('#message').val("Your parts have been ordered. We'll let you know when we receive the parts and begin installing them."); 

当我单击一个按钮时,它将获取字符串并将其填写在textarea中,以使填写表单更容易。它用正确的信息填充textarea,并且在实际的表单元素上看起来很棒。

但是,当我使用 PHP 邮件函数将消息发送到客户端时,在每个'"和其他特殊字符处,它会在字符之前插入一个',因此它将输出如下:

您的零件已订购。当我们收到零件并开始安装它们时,我们会通知您。

是否有一个内置函数可以在发送电子邮件之前运行变量?

我一直在做一些研究,我发现最接近的是PHP htmlspecialchars函数,但这与我想要实现的完全相反。


获取 POST 变量:

$commentmessage = mysqli_real_escape_string($conn, $_POST['message']);

设置电子邮件的标题(可能相关,因为我使用表格格式化它):

$headers = "From: Repairs@email.com 'r'n";
$headers .= "Reply-To: ". $useremail . "'r'n";
$headers .= "CC: myemail@email.com 'r'n";$headers .= "MIME-Version: 1.0'r'n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1'r'n";

创建消息:

$emailmessage = wordwrap($emailmessage, 100, "'r'n");
$emailmessage = '<html><body>';
$emailmessage .= '<img src="imageurl" alt="Logo" />';
$emailmessage .= '<table rules="all" border="1" style="border-color: #666;" cellpadding="10">';
$emailmessage .= "<tr style='background: #eee;'><th colspan='2'><strong>" . $commentSubject ."</strong></th></tr>";
$emailmessage .= "<tr><td>" . $commentmessage . "</td></tr>";
$emailmessage .= "<tr><td><b>Ticket #: </b>" . $ticketid . "</td></tr>";
$emailmessage .= "</table>";
$emailmessage .= "</body></html>";
// Send Mail By PHP Mail Function
if (mail($to, $subject, $emailmessage, $headers)) {
    $message = "Your mail has been sent successfully!";
} 
else {
    $message = "Failed to send email, try again.";
}

对于 PHP,你有一个内置函数:stripslashes()。