如何在 textarea 表单帖子中保留空格和格式? [复制]
Posted
技术标签:
【中文标题】如何在 textarea 表单帖子中保留空格和格式? [复制]【英文标题】:How do you keep the whitespace and formatting in a textarea form post? [duplicate] 【发布时间】:2013-12-25 05:48:49 【问题描述】:我正在尝试发布要存储到数据库中的文本区域,并且我想保留所有空白区域,以便我可以查询它并显示在不同的位置。这里的问题是,当这个表单提交时,整个 textarea 被作为一行发送。我已经研究了 htmlspecialchar 和 urlencode,但是如果这甚至是使用它们的正确位置,怎么能在这里应用呢?
<form name = "exam" action="takeTest.php" method="post">
<textarea name="pa1" required rows=10 cols=55>public int add(int a, int b)
</textarea>
<input type="submit">
</form>
编辑
尝试了 pre 标记,但除了代码之外,这些标记只是显示为默认文本。我认为添加 \n 标记会在代码通过单元测试时弄乱代码,但我会尝试一下。
我表单的这一部分是编程部分,它试图模拟codingbat正在做的事情。
【问题讨论】:
每一行将由\n
分隔,如果您是这个意思?
这实际上取自我的 php 代码,所有这些实际上都是在 $pageContent .= ' 之后我回显 $pageContent 的地方
感谢马里奥的链接!打算尝试包装 标签
【参考方案1】:
就像@Danny 所说,行 是 分开的,但不是 HTML 换行符,如您所料。
要将换行符 (\n
) 转换为 HTML 换行符 (<br>
),只需使用 nl2br;这样您就可以在适当的 HTML 中使用数据库中的字符串。
它转换:
Hey\nthere
进入:
Hey<br>there
哪些浏览器呈现如下:
Hey
there
【讨论】:
我担心它可能会干扰单元测试,因为我将在编译后运行输入,但我会试一试 这就是它的用途。如果您需要渲染 HTML,请使用该功能,如果您需要其他内容,请自己制作(可能使用简单的字符串替换),但底线是这些行就在那里,您不必担心。跨度> 只需阅读您的更新:无需像您说的那样放置任何 \n 标签。他们自动在那里。我的意思是,如果你想以 HTML 格式输出,只需使用echo nl2br($your_text_var);
。【参考方案2】:
在插入db之前,php有一个函数nl2br()
。
然后,如果您要在 body 上回显数据,只需打印 else 以在 textarea 中再次编辑它,请使用此
function br2nl($string)
return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
【讨论】:
以上是关于如何在 textarea 表单帖子中保留空格和格式? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
IE - 如何在 textarea 中保留空白,使用 javascript 字符串输入
通过 ruamel.yaml 转储时如何在 yaml 文件中保留空值
如何在 HTML 选择选项列表中保留空间<option value='hi this'>hi</option>
Spring-Boot Config:如何在用于填充 Map<String, String> 的 yaml 键中保留空格