【问题标题】:nl2br() not working with my textareanl2br() 不适用于我的文本区域
【发布时间】:2013-02-09 13:27:08
【问题描述】:

谁能帮我解决这个问题。

我只是想显示来自用户的消息。消息从文本区域进入我的数据库。我的问题是,当我键入消息并将其格式化为分段时,它不会以该格式显示并将其显示为一个长段落。

像这样。

要更改文档的整体外观,请选择新的主题元素 在页面布局选项卡上。更改快速中可用的外观 样式库,使用更改当前快速样式集命令。 \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.';
}

这是我从数据库中选择消息时使用的代码

$message= $row['message'];
$message= nl2br(strip_tags($message));

当回显 $message 时,它​​会打印一个类似上面的段落。

【问题讨论】:

  • 正如你所说的那样,我想我在这里正确使用了 nl2br() 和 mysqli_real_escape_string() 。安装它?
  • 问题仍未解决。这些 \r\n\r\n 字符不会使用我的代码转换为
    标记。
  • 您是否尝试将消息的字符长度输出回浏览器(来自 PHP,作为响应),以便您查看发生了什么?

标签: php


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    据我了解,通过使用mysqli_real_escape_string(),您可以使其转义反斜杠,因此在交易时,例如\r\n 变为\\r\\n,但是,如果这些已经被 Javascript 转义,那么您最终会得到什么在交易期间是\\\\r\\\\n,它转换回html为

    1. 文字反斜杠
    2. r
    3. 文字反斜杠
    4. n

    因此,您可能希望在添加到数据库之前将它们替换为适当的字符。这样做您可以从各种内置函数中获取图片,例如preg_replace()strtr()str_replace()...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2011-07-18
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多