我在一个表单中有一个文本区域,它可以做到这一点:
<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教程中逐行复制而来的。
现在,在电子邮件中,如果用户在文本字段中单击return,他将收到以下内容
这是第一行。现在,我将在此处按return。\r\n这是新行
为什么要添加\r\n?我明白这些是什么意思,但是为什么它们会出现呢?
发布于 2013-01-29 12:31:03
来自PHP docs
mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠添加到以下字符前面:\x00、\n、\r、\、‘、“和\x1a。
因此,您的字符串现在包含两个反斜杠和两个字母,而不是换行符。
现在的问题是稍后如何处理$value。如果您将其插入到SQL语句中,它就应该是这样的;如果您直接将它用于邮件,它将使用文字\r\n而不是回车符。
https://stackoverflow.com/questions/14575638
复制相似问题