使用PHP / MYSQL来转义电子邮件中的字符
||
当我在PHP中使用
mail()
函数时,我很难弄清楚如何转义字符背后的逻辑。我使用的是PHP 5.2,其中magic_quotes_qpc为ON,运行时/ sybase为OFF。这是问题所在。
一个具有接受文本输入的格式,我使用ѭ1来转义特殊字符以在SQL语句中使用,例如:
$text = mysqli_real_escape_string($dbc, $_GET[\'text\']);
如果我在表单中输入以下注释“我不会吃那个!”,我将在数据库中看到以下内容:“我不会吃那个!”,这是我期望的。如果我添加回车符/换行符,我在phpMyAdmin的数据库字段中看到的就是回车符和换行符,它们没有特殊字符(即没有\“ \\ r \\ n \”或类似的东西)。
当我使用mail
函数发送消息(即mail($to, $subject, $text, $headers)
)时,我在电子邮件正文中得到了类似的奇怪信息:
I wouldn\\\\\\\'t eat that\\r\\nI couldn\\\\\\\'t eat that
最后,我只希望电子邮件输出的格式与表单输入完全相同,换句话说:
I wouldn\'t eat that
I couldn\'t eat that
我不确定为什么撇号前会有三次转义,为什么\\ r \\ n出现在我的电子邮件中。
没有找到相关结果
已邀请:
2 个回复
膏焦凑
关闭魔术引号(确保您是应用程序可以处理),仅在插入数据库时转义(如果使用参数化查询,即PDO或mysqli,则无需转义!)。 作为最后的选择,您可以尝试在字符串上使用反斜杠。
伐教爸