【问题标题】:PHP nl2br() to new MYSQL rowPHP nl2br() 到新的 MYSQL 行
【发布时间】:2014-08-07 23:30:09
【问题描述】:

我有一个文本区域,用户可以在其中输入多行。我想让它在输入新行时作为新记录插入到我的表中。如何使用 nl2br() 函数来完成此操作?有没有我忽略的简单解决方案,或者我需要 nl2br 以外的其他解决方案?

【问题讨论】:

  • 您应该在每个\n(换行符)字符之后拆分字符串,然后分别插入每个元素。 nl2br 此处不需要,但在显示该数据时可能需要它。
  • nl2br() 是一个 html 格式化工具,而不是用于格式化以在数据库中使用的东西。我假设你的表是指数据库!
  • 如何检测每个\n?现在,当我在 textarea 中按 Enter 并将其提交到我的数据库时,没有什么需要注意回车。

标签: php mysql nl2br


【解决方案1】:

nl2br() 只是在您传递的任何变量上将"\n" 替换为"<br>"。它不会将变量分解为多个变量/数组。

你需要做类似的事情

$lines = explode("\n", $_POST['text_area_input']);
foreach($lines as $line) {
    // do database insert query for each $line
}

当然,您还应该清理用户输入

【讨论】:

  • 这看起来正是我所需要的,但我想我最大的问题是我在上面提到的 cmets。当我按 Enter 并键入新行时,它不会与“\n”一起存储。我是否错误地设置了 texarea 或者该信息没有传递到 MYSQL 表?
  • "\n" 本身不是可见字符。如果您在文本中看到换行符,则可能是因为“\n”或“\r”字符。另外在相关说明中,请确保在 PHP 代码中对这些字符使用双引号,'\n' 将评估为文字 "\" 和 "n" 字符
  • 当我在文本区域键入文本并按回车键时,然后在新行中键入它被解释为一个文本块。我直接从 $_POST 中回显了 $line,没有 \n 或 \r。只是所有的文本,就好像它是一行一样。我需要对它做点什么来休息吗?
  • \n 或 \r 不是可见字符。您“看到”它们的唯一方法是通过呈现文本时创建的新行。这可能只会增加混乱,但我确实忘记说的一件事是,它很可能是每个新行的“\r\n”。这可能会有所帮助。如果您只输入“1”、“2”、3”,每个在 textarea 的行中,然后在 PHP 脚本中回显 strlen($_POST['whatever-field']); 它的值应该7岁
  • 知道了!完美的解释。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 2017-08-09
  • 1970-01-01
  • 2011-12-01
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多