\ r \ n被添加到textfield结果为PHP / HTML格式

时间:2013-01-29 04:25:16

标签: php html forms

我有一个表单中的文本区域:

<textarea rows="4" name="message"></textarea>

在PHP中,当提交表单时,会发生这种情况:

 $text_form = $database -> escape_value($_POST['message']);

然后使用PHPMailer将其作为电子邮件的一部分发送:

$message .= '<p style="font-family: Arial, verdana, sans-serif;"><strong>Brief Message</strong>: ' . $text_form . '</p>';

最后这里,是我上面提到的数据库方法:

public function escape_value($value) {
    if ( $this->real_escape_string_exisits ) {
    if ( $this->magic_quotes_active ) { $value = stripslashes( $value ); }
        $value = mysql_real_escape_string($value);
    } else {
        if (!$this->magic_quotes_active ) { $value = addslashes( $value ); }
    }
    return $value;      
}

上述方法实际上是从Lynda.com教程中逐行复制的。

现在在电子邮件中,如果用户在文本字段中点击返回,他就会得到此

这是第一行。现在我将按返回此处。\ r \ n这是新行

为什么要添加\ r \ n?我明白这些是什么意思,但为什么会出现呢?

1 个答案:

答案 0 :(得分:1)

来自PHP docs

  

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

所以你的字符串现在包含两个反斜杠和两个字母而不是换行符。

现在的问题是你以后如何处理$value。如果将它插入到SQL语句中,那应该是这样的;如果您直接将它用于邮件,则它具有文字\r\n而不是回车换行符。

相关问题