javascript - 如何在不破坏 HTML 标签的情况下将空格转换为 &nbsp?

标签 javascript html regex string

我继承了一个网络论坛的一些非常复杂的代码,我正在尝试实现的功能之一是空间不被 chop 为一个的能力。这主要是因为我们的用户经常希望在他们的帖子中包含 ASCII 艺术、表格等。

我首先在 javascript 中使用简单的搜索和替换来做到这一点,这有破坏 HTML 标签的副作用(例如 <a href=....> 变成了 <a&nbsp;href=.....>)。

然后我尝试在服务器端执行此操作,当检索到字符串时,通过在人们插入的链接和代码转换为 HTML 之前转换空格。这在一定程度上有效,但它会导致代码的其他部分出现一些问题,例如,如果消息被 chop 以显示在主页上,它可能会留下一些空格代码,例如

Here is a message&nb

我认为可能有一种方法可以改变原始的 javascript 来实现这一点——它只需要匹配不在 HTML 标签内的空格。

我最初使用的脚本是 message = message.replace(/\s/g, "&nbsp;") .

感谢您为此提供的任何帮助。

最佳答案

您可以使用 pre 元素来包含预格式化的文本,它按原样呈现空格。参见 http://www.w3.org/TR/html5-author/the-pre-element.html

那些文档明确指出 pre 元素的最佳用途之一是“显示 ASCII 艺术”。

示例:http://jsbin.com/owuruz/edit#preview

<pre>
         /\_/\
    ____/ o o \
  /~____  =ø= /
 (______)__m_m)
</pre>

在您的情况下,只需将您的 message 放在 pre 标记中即可。

关于javascript - 如何在不破坏 HTML 标签的情况下将空格转换为 &nbsp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062042/

相关文章:

html - 图像未通过 css 显示

javascript - 使用 JS 创建的 SVG 被裁剪

html - 为 QA 自动化添加 ids 到 HTML 标签

javascript - 现在缺少 g 标志时 matchAll 抛出错误?

javascript - jQuery 提交阻止默认值

javascript - 无法使用javascript在android webview中设置文本

javascript - 多语言 Elasticsearch 映射设置

python - 正则表达式 : Match string between two slashes if the string itself contains escaped slashes

php - 在数字字符串的特定位置添加空格

javascript - 点击后隐藏div