我正在为我们在应用程序中使用的tinyMCE编辑器编写一个正确的拼写检查对话框。
我正处于确定所有单词替换的步骤,现在我需要将更改应用于textarea的innerHTML。
我对此的关注是能够处理可能在一个单词内的任何标记。 (因为用户不可信任)
例如,如果我想替换像“some word ”这样的单词,我将不得不处理&lt; b&gt;以某种方式标记some<b>word</b>
。可能是这样......
一些字 - &gt; myreplacement
所以 mewo rd - &gt; myreplacement
一些单词 - &gt; myreplacement的 的
所以 mewo rd - &gt; myreplacement
<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>
但是,只要它不消除段落宽格式,我就不在乎。
构建解析器是我唯一的选择吗?
答案 0 :(得分:0)
我会使用HTML Purifier进行繁重而重要的工作。
然后,为了得到分开的单词,我会打破有空格的内容。
在此之后,您可能希望使用正则表达式从字符串的开头和结尾抓取标记。
然后应用“strip_tags”函数删除单词中间的剩余标签。
最后,你有“裸”字来应用替换这个词。如果不需要更换,您可以轻松使用原始字符串。否则...
接下来,您可以放回开始和结束标记。
如果你想将标签放回中间,你必须在“strip_tags”阶段抓取它们(可能使用正则表达式而不是strip_tags,或者可能将strip_tags结果与原始字符串进行比较,在该阶段) 。您需要在替换后的单词之后或之前定位这些标记。
将单词拼接在一起也是另一个容易的部分。
答案 1 :(得分:0)
您正在寻找的是像tinymce附带的搜索/替换插件。看看这个小插件的源代码,你会发现你也可以在你的场景中使用这个插件的搜索和替换功能。