javascript - 如何替换包含 HTML 标签的单词而不丢失 HTML 标签?

标签 javascript jquery tinymce string-parsing

我正在为我们在应用程序中使用的tinyMCE编辑器开发一个正确的拼写检查对话框。

我已经确定了所有单词替换,现在我需要将更改应用到文本区域的innerHTML。

我对此的关心是能够处理可能在一个单词内的任何标记。 (因为用户不可信)

例如,如果我想替换“someword”这样的单词,我将必须处理 标签 some<b>word</b>以某种方式。大概是这样...

一些单词 -> 我的替换
someword -> myreplacement
一些单词 -> 我的替换
someword -> 我的替代品

<b>some</b>word        -> <b>myreplacement</b>
so<b>mewo</b>rd        -> myreplacement
some<b>word</b>        -> myreplacement<b></b>
<b>so<i>mewo</b>rd</i> -> <b>myreplacement</b><i></i>

但我并不关心,只要它不会消除段落宽格式即可。

构建解析器是我唯一的选择吗?

最佳答案

我会使用 HTML Purifier 来完成繁重而重要的工作。

然后,为了获得分隔的单词,我会在有空格的地方打断内容。

此后,您可能需要使用正则表达式从字符串的开头和结尾抓取标签。

然后应用“strip_tags”函数删除单词中间剩余的标签。

最后,您有了“naked”单词来应用单词替换。如果不需要更换,您可以轻松地保留原来的琴弦。否则...

接下来,您可以放回开始和结束标签。

如果您想将标签放回中间,则必须在“strip_tags”阶段获取它们(可能使用正则表达式而不是 strip_tags,或者可能在该阶段将 strip_tags 结果与原始字符串进行比较) 。您需要将这些标签放置在替换单词之后或之前。

将单词片段连接在一起也是另一个简单的部分。

关于javascript - 如何替换包含 HTML 标签的单词而不丢失 HTML 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9401515/

相关文章:

javascript - 单击复选框时如何更改某些文本?

javascript - Jquery - 添加超链接到数据表

javascript - 如何使用 jQuery 只允许定义的字符作为输入?

javascript - TinyMCE 拼写检查器请求错误 404

php - 试图将我的嵌入照片库(来自 tinymce 编辑器)对齐在我的模态 div 的中心

javascript - TinyMCE v4 自动完成

javascript - 在react js中渲染动态html

javascript - 我怎样才能让这个javascript表单验证DRYer?

javascript - 没有静态 ID 的 jqPlot 目标

jquery - 如何获取与复选框关联的标签的值(我是否破坏了 jsfiddle)?