换行符在电子邮件中显示为普通文本

时间:2013-06-27 00:17:58

标签: php validation email

我有一个HTML表单,用PHP发送联系人邮件。

一切顺利,除了来自textarea的消息正文,将使用这两个函数进行过滤:

1:mysql_real_escape_string()

OR

2:

function clean_data($input) {

            $input = trim(htmlentities(strip_tags($input,",")));

            if (get_magic_quotes_gpc())

                $input = stripslashes($input);

            $input = mysql_real_escape_string($input);

            return $input;

        }

当我放置一些换行符时,它会转换为真正可见的\ r \ n

而不是显示:

您好,

这是一封测试邮件。

它显示了这个:

你好,\ r \ n \ r \ n这是一封测试邮件。

如果我按原样传递字符串而未经验证,则效果很好。

这里的问题是什么?

感谢。

2 个答案:

答案 0 :(得分:2)

mysql_real_escape_string

  

转义unescaped_string中的特殊字符   考虑连接的当前字符集,以确保它是安全的   将它放在mysql_query()中。如果要插入二进制数据,请执行此操作   必须使用函数。

     

mysql_real_escape_string()调用MySQL的库函数   mysql_real_escape_string,它将反斜杠添加到以下内容   字符:\ x00,\ n,\ r,\,',“和\ x1a。

     

此函数必须始终(少数例外)用于制作数据   在向MySQL发送查询之前是安全的。

插入时需要的唯一处理是mysql_real_escape_string,但最好使用预备语句,也许使用PDO或MDB2。

也就是说,您可以使用mysql_real_escape_string来验证textareas。这是一个示例函数:

function validateContent($txtInput)
{
    if(isset($_REQUEST[$txtInput]))
    {
    $txtInput =  $_REQUEST[$txtInput];
    }
return mysql_real_escape_string(trim($txtInput));
}

希望这有帮助!

答案 1 :(得分:1)

好的,我找到了它!

逃跑后我做了这个:

str_replace('\ r \ n',PHP_EOL,$ message)

现在它完美无缺。