如何在 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 换行符 (&lt;br&gt;),只需使用 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 键中保留空格

在 Tesseract 中保留空间

使用 BeautifulSoup 写入文件时在 Django 模板中保留空格