情况如下。我在MySQL中存储了一个纯文本电子邮件,其中包含换行符\r\n
。当我的php脚本需要发送邮件时,它首先使用sprintf
填写一些参数,然后使用标准mail()
函数发送邮件。
我遇到的问题是电子邮件客户端(在我的情况下是thunderbird)显示这些换行符而不是解释它们。
为了测试我的脚本,我在邮件中硬编码了一个句子。当我这样做时,邮件被正确解释。我的第一个尝试是MySQL逃避反斜杠,所以我试图做str_replace("\\\\", "\\", $str)
,但这没有用。
我显然做出了错误的假设或愚蠢的错误,但我没有看到它。可能是什么问题呢?
答案 0 :(得分:1)
尝试将其替换为str_replace('\ n \ r',“\ n \ r”);如果\ n \ r \ n字符作为四个单独的字符保存在您的邮件中,它可能会解决您的问题。如果您使用例如phpmyadmin输入它们,它们将保存为4个字符,而不是您期望的2个字符。
希望它有所帮助!
答案 1 :(得分:0)
尝试使用var_dump打印消息,这可能会显示有关字符串值的更好信息。
答案 2 :(得分:0)
也许将此用于ty并删除斜杠:
stripslashes($str);