我正在为我们在应用程序中使用的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/