保留文本区域中的换行符

问题描述 投票:0回答:5

我有一个带有文本区域的表单,我想在输出内容时保留用户输入的换行符。

例如,如果我在文本区域中写入:

这里有一句话。这是另一个。这里还有一张。

这是一个新段落。这是一个新句子。这是另一个。

我想要相同的输出,不是

这里有一句话。这是另一个。这里还有一个。这是一个新的 段落。这是一个新句子。这是另一个。

如何保留换行符?

html css textarea line-breaks
5个回答
249
投票

一般只需添加即可

  • white-space: pre-line;
    空格被修剪为单个空格

  • white-space: pre-wrap;
    保留所有空白

元素的样式 (CSS),您希望在其中使用换行符呈现文本。


24
投票

用户输入的换行符被保留,html 和 php 都不会简单地删除或更改任何内容。然而,html 标记在渲染可视化时使用“不同”的方式来编码换行符。这有非常充分的理由。所以你要做的就是将现有的换行符“翻译”为html样式的换行符。 如何做到这一点取决于您所处的工作环境。一般来说,您必须将换行符代码(例如 \n)翻译为

<br>

标签。

php
脚本语言为此提供了一个功能,例如:
nl2br()

但是请注意:这只适用于将文本
渲染
为 html 标记时。例如,当您再次将文本输出到表单内的文本区域以允许更改它时,这并不适用。在这种情况下,您必须保留收到的原始换行符。

因此,您通常要做的就是:保存收到的未更改的文本输入。当再次将该文本输出到客户端时,例如从之前保存过的数据库中读取该文本后,您就知道情况以及文本将如何呈现。此时您要么翻译现有换行符,要么保留现有换行符不变。 可以还可以通过

<pre>...</pre>

标签对包含换行符的未更改文本进行编码,因此将它们标记为要呈现为预格式化。例如,在 html 页面中显示源代码时就会这样做。

你可以这样做:


white-space: pre-wrap; overflow-wrap: break-word;


5
投票

如果您愿意,可以通过在文本区域字段上注册事件侦听器来避免空格换行,如下所示:

$("textarea").off("keyup").on("keyup", e => { var t = $(e.target); t.val(t.val().replaceAll("\n", " ")); })

0
投票

您将文本区域中的输出保持原样。您将收到作为字符串输出的输入,
string(write to file)

该字符串将文本区域添加到输入字符串中。


-3
投票


© www.soinside.com 2019 - 2024. All rights reserved.