【问题标题】:HTML textarea input doesnt recognize line breaksHTML textarea 输入不识别换行符
【发布时间】:2013-10-25 04:56:30
【问题描述】:

我有一个非常愚蠢的问题,但我找不到解决方法, 我使用支持票对帮助台系统进行编程 我的网站上有一个表格,例如

<form action="somepage.php" action="post">

<input id="reply" type="textarea">

<button id="replyButton" type="submit">Submit</button>

</form>

但是当用户提交文本,我在网站上显示它作为用户和支持助手之间的对话时,它不识别换行符,我不知道它是放 \n\r 还是 #10# 13,甚至什么都没有……

我已经测试过,当我在文本区域中按 Enter 并单击提交时,当我从我的数据库中获取相同的文本时,我会得到 EMPTY SPACES 应该是换行符的地方......

BTW> 在使用 utf8_enconde($text) 显示文本之前,因为人们正在输入特殊字符,例如带有锐角和 ñ 的字母

【问题讨论】:

  • 标记&lt;input id="reply" type="textarea"&gt; 无效。浏览器将其视为具有type=text,即它创建一个单行控件,而不是像&lt;textarea&gt;元素那样的多行控件(除非您使用一些奇怪的浏览器)。跨度>

标签: php html forms line-breaks


【解决方案1】:

在 HTML 中你使用

<br>

标签用于换行。用所述标签替换所有换行符(换行符),您 应该 没问题。您可以使用 nl2br() 将换行符(换行符)“转换”为该标签(它实际上只在换行符(换行符)之后插入此类标签。

【讨论】:

  • 是的,但是如何使文本区域显示或将换行符转换为
    ... ???
  • @Gabriel Matusevich 更新了答案以回答您的评论。
  • 是的,就是这样!.. .. 在 7 分钟内将答案标记为正确.. 在 o.O! 之前不能这样做!
【解决方案2】:

在将其存储到数据库之前转义所有特殊字符。例如在 MySQL 中,您可以使用 mysql_real_escape_string。这会在存储在数据库中时转义所有特殊字符。

mysql_real_escape_stringhttp://php.net/manual/en/function.mysql-real-escape-string.php

然后在显示数据库中的内容时使用 nl2br()

nl2br()http://php.net/manual/en/function.nl2br.php

【讨论】:

  • 没错,但您还应该清除来自各种其他攻击的用户输入,而不仅仅是数据库攻击。例如,参见 XSS。
猜你喜欢
  • 2012-10-23
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多