nl2br()无法使用我的textarea

时间:2013-02-09 13:27:08

标签: php

有人可以帮我解决这个问题。

我只是想显示来自用户的消息。消息从textarea到达我的数据库。我的问题是当我输入消息并将其格式化为分段时,它不以该格式显示并将其显示为一个长段。

像这样。

  

要更改文档的整体外观,请选择新的主题元素   在页面布局选项卡上。更改快速中可用的外观   样式库,使用“更改当前快速样式集”命令。   \ r \ n \ r \ n主题库和快速样式库提供   重置命令,以便您始终可以恢复您的外观   将文档记录到当前模板中包含的原始文档。

我尝试使用nl2br()和strip_tags()但仍然没有运气

验证消息中的代码。

// Check for message
if ( !empty ( $_POST['message'])) {
    if ( mb_strlen ( $_POST['message'], 'UTF-8') <= 20 ) {
        $reg_errors['message'] = 'Your message must be greater than 20 characters';
    } else {
        $message = mysqli_real_escape_string($dbc, $_POST['message']);
    }   
} else {
    $reg_errors['message'] = 'Message: This field is required.';
}

这是我从db

中选择消息时使用的代码
$message= $row['message'];
$message= nl2br(strip_tags($message));

当回显$ message时,它会打印一个如上所示的段落。

2 个答案:

答案 0 :(得分:2)

将数据添加到数据库时,您正在进行过多的转义 如果您正在使用预准备语句,只需从代码中删除mysqli_real_escape_string()调用即可 否则你要做两次 - 你必须找到它发生的地方,并从你的代码中删除额外的mysqli_real_escape_string()调用。

答案 1 :(得分:0)

根据我的理解,通过使用mysqli_real_escape_string(),您将使其转义为反斜杠,因此在事务处理时\r\n变为\\r\\n,但是,如果这些已经被转义为Javascript然后你在交易期间最终得到的是\\\\r\\\\n,它转换回html为

  1. 字面反斜杠
  2. - [R
  3. 字面反斜杠
  4. 名词
  5. 因此,在添加到数据库之前,您可能希望用适当的字符替换它们。这样你就可以从各种内置功能中进行拍照,例如preg_replace()strtr()str_replace() ......