如何从summernote编辑器获取纯文本?

Posted

技术标签:

【中文标题】如何从summernote编辑器获取纯文本?【英文标题】:How to get the plain text from summernote editor? 【发布时间】:2015-06-14 18:52:02 【问题描述】:

例如,这是我输入的:

sdf
42342
xxcv

.code() 将其转换为sdf<br>42342<br>xxcv

或者别的:

["_type":"ServerOperation","operationType":"ANNOUNCE"]

变成

<span class="message_content">["_type":"ServerOperation","operationType":"ANNOUNCE"]</span>

如何获取纯文本/纯文本?

【问题讨论】:

【参考方案1】:

试试这个:

var plainText = $($("#summernote").code()).text()

编辑: 在较新的版本中,您需要使用它:

var plainText = $($("#summernote").summernote("code")).text()

【讨论】:

强大,并避免在 hmtl 上使用正则表达式。这一定是公认的答案! 您的答案可能会返回一个空字符串。 $('').html($("#summernote").summernote("code")).text() 更好!【参考方案2】:

您可以在.code() 之后应用问题javascript: How to strip HTML tags from string? 的前两个答案之一来剥离标签。

ReactiveRaven 的回答(保持一行)对我来说很好:

cleanText = $("#summernote").code().replace(/<\/?[^>]+(>|$)/g, "");

例如,["_type":"ServerOperation","operationType":"ANNOUNCE"]:

$("#summernote").code() 返回

&lt;p&gt;["_type":"ServerOperation","operationType":"ANNOUNCE"]&lt;br&gt;&lt;/p&gt;

$("#summernote").code().replace(/&lt;\/?[^&gt;]+(&gt;|$)/g, "") 返回

["_type":"ServerOperation","operationType":"ANNOUNCE"]

没有任何标签。


如果您想保留回车,可以在应用链接问题中指定的解决方案之前将&lt;/p&gt;&lt;br&gt; 替换为\n

$("#summernote").code()
                .replace(/<\/p>/gi, "\n")
                .replace(/<br\/?>/gi, "\n")
                .replace(/<\/?[^>]+(>|$)/g, "");

【讨论】:

是的,同时我用php的striptag解决了它【参考方案3】:

我需要检查 textarea 是否有任何内容。这已经成功了:

当前的summernote版本(8):

$($("#summernote").summernote('code').replace(/&nbsp;|<br>/g, ' ')).text().trim() == ''

在我的旧版本中:

$($("#summernote").code().replace(/&nbsp;|<br>/g, ' ')).text().trim() == ''

【讨论】:

这很有用,但不能按原样工作。我必须将“.code()”更改为“.summernote('code')”才能正常工作。 在当前版本中,似乎正如@AustinBest 所说。在这里:hub.readthedocs.io/en/stable/assets/global/plugins/… 我在旧版本中找到了它。我相信 Summernote API 已经改变了,但我不知道具体的版本。【参考方案4】:

你可以用这个

   var code = $("#editor").code();
var text = code.replace(/<p>/gi, " ");
var plainText= $("<div />").html(text).text();

【讨论】:

div 包装内容非常重要,就像您在这里所做的$("&lt;div /&gt;").html(text).text(); 一样。因为如果你 Summernote 的内容包含一些纯文本并且你没有将整个内容包装在一个 HTML 标记(如 div)中,那么 jQuery 将通过一个错误说它不是预期的。【参考方案5】:

较新的版本

var contents = $('#summernote').summernote('code');
var plainText = $("<p>" + contents+ "</p>").text();

添加虚拟标签

解决了格式缺失问题。

【讨论】:

【参考方案6】:

试试这个:)

$('#summernote').summernote ('code', '<b> hello world </ b>');

【讨论】:

问题是如何获取文本以及插入文本

以上是关于如何从summernote编辑器获取纯文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 将 Summernote 文本从 JSON 数据转换为纯文本?

在summernote编辑器中将内容粘贴为纯文本

Summernote 编辑器中的粘贴事件未触发 - 无法获取粘贴值

PhpMailer 发送的电子邮件内容仅显示纯文本,不包含 HTML 样式

如何在summernote文本编辑器中禁用右键单击

Summernote 只允许表格中的纯文本