【问题标题】:Process whitespaces from user input处理来自用户输入的空格
【发布时间】:2014-09-01 07:23:24
【问题描述】:

我在问题中包含 Python 的唯一原因是 PHP 具有插入 br 标记的 nl2br 函数,Python 中的类似函数可能有用,但我怀疑这问题可以用 HTML 和 CSS 解决。

所以,我有一个在文本区域中接收用户输入的表单。我将它保存到 Postgres 数据库中,然后当我显示它时,它不包括用户提供给单独段落的换行符。

我尝试在段落标签上使用white-space CSS 属性:

white-space: pre

white-space: pre-wrap

但是,这很奇怪,结果是分开的行,但第一行在中间对齐:

包括text-align:left 并没有解决问题。我确信有一个简单的解决方案。

【问题讨论】:

  • 那么问题是如何用空格替换字符串中的\n个字符?
  • 我认为您正在尝试使您的 textarea 成为富文本编辑器。我使用 iframe 创建了一个 RTE,它在 html 中生成用户的内容,然后将相同的 html 保存在数据库中。
  • @timgeb 我想这是我的问题。我只是不确定是否有针对这种情况的具体考虑,我还想表明我在 CSS 中尝试了white-space。那么......你是怎么做到的呢?。

标签: python html css input


【解决方案1】:

我建议将换行符替换为<br />,或者在将其存储到数据库之前(仅一次)或在获取它时(see comment)。

使用 Python:

import re
myUserInput = re.sub('(?:\r\n|\r|\n)', '<br />', myUserInput)

使用 JavaScript(见jsfiddle):

myUserInput = myUserInput.replace(/(?:\r\n|\r|\n)/g, '<br />');

【讨论】:

  • 快速说明:我建议在存储原始数据后修改内容;样式/标记不应存储在数据库中,因为 (1) 它会增加您存储的原子的大小,并且 (2) 将来更改样式将是一个痛苦。跨度>
  • @CaseyFalk 好点!我已编辑我的帖子突出显示您的评论。
  • 更不用说存储它会将它呈现给用户,即使用户必须编辑文档。
  • 感谢您的回答,像这样将您的javascript与jquery一起使用$('.text').each(function(){ var inner_text = $(this).html(); $(this).html(inner_text.replace(/(?:\r\n|\r|\n)/g, '&lt;br /&gt;')); });它可以工作,但是它在文本的开头添加了一两个
    (不知道为什么),它看起来很难看每条评论前加一两个空格。还尝试了 Python 的方式,它工作正常,它只需要关闭 html 转义:{{text|safe}},但我不确定是否对每条评论和每条帖子都这样做是正确和安全的。
  • 好的,谢谢!有效。是的,我使用 Django。如果有人觉得这很有用:我最终使用了 Python 解决方案,在每个表单的 clean_ 方法中使用 html.strip_tags,并将其与模板中的 {{text|safe}} 结合使用。我希望它足够节省。干杯。
猜你喜欢
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
  • 2012-03-05
相关资源
最近更新 更多