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


linebreak characters show as normal text in email

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

除了来自文本区域的消息正文外,一切都很顺利,文本区域将通过以下两个功能进行过滤:

1:mysql_real_sescape_string()

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这是一封测试邮件。

如果我在没有验证的情况下按原样传递字符串,它会很好地工作。

这里有什么问题?

谢谢。

mysql_real_aescape_string

转义unscaped_string中的特殊字符,考虑计算连接的当前字符集,以确保其安全将其放置在mysql_query()中。如果要插入二进制数据必须使用函数。

mysql_real_eescape_string()调用mysql的库函数mysql_real_eescape_string,它将反斜杠前置到以下内容字符:''x00,''n,''r,'',',"和''x1.

此函数必须始终(除少数例外)用于生成数据安全,然后再将查询发送到MySQL。

插入时唯一需要的处理是mysql_real_eescape_string,但最好使用准备好的语句,可能与PDO或MDB2一起使用。

也就是说,您可以使用mysql_real_eescape_string来验证文本区域。下面是一个示例函数:

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

希望这能有所帮助!

好的,我找到了!

逃跑后我做了这个:

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

现在它运行得很好。