Html 查找并替换所见即所得编辑器
我的问题如下: 我有一个专栏:ProductName。现在,这里输入的文本是从tinyMCE输入的,因此它有各种各样的标记。用户希望能够对所有产品进行查找和替换,并且必须支持着色 例如,假设这是ProductName的一部分: 其他文本<代码>文本颜色文本®。其他文本 现在,用户希望替换:Html 查找并替换所见即所得编辑器,html,text,Html,Text,我的问题如下: 我有一个专栏:ProductName。现在,这里输入的文本是从tinyMCE输入的,因此它有各种各样的标记。用户希望能够对所有产品进行查找和替换,并且必须支持着色 例如,假设这是ProductName的一部分: 其他文本文本颜色文本®。其他文本 现在,用户希望替换: <font color="#ff6600">colortext®</font> colortext®; 原始名称中有标记,因此显示为粗体。因此,用户将其设置为粗
<font color="#ff6600">colortext®</font>
colortext®;
原始名称中有
标记,因此显示为粗体。因此,用户将其设置为粗体-现在他正在搜索的文本是:
<strong><font color="#ff6600">colortext®</font></strong>
彩色文本®强>
显然我找不到它了。另外还有空间的问题:在一个地方它有一个空间,在另一个地方它没有
有办法克服这个问题吗?我不确定你说的每句话都能听懂,但是使用正则表达式似乎是解决你所说问题的好办法。从搜索文本中去掉HTML标记,然后先进行纯文本搜索。然后,逐部分(即,逐文本节点的文本节点)获取搜索文本各部分的元素路径,并将其与找到的文本中的对应部分进行比较。如果所有零件的路径匹配,则完成
Edit:关于路径,我的意思类似于XPath,或者TinyMCE编辑器的路径概念。示例:搜索文本的纯文本部分是“colortext®;”。搜索文本中此文本节点的路径为
/
。在文本正文中搜索相同的纯文本(平凡),并选择它的路径,也就是/
。(将其与“其他文本…”的路径(即/
)和“文本”的路径(即
)进行比较)这两条路径相同,因此这是真正的匹配。如果您有一个DOM树表示,那么确定路径应该不难。如果它是有效的XML,XSLT对于这种练习来说是微不足道的。
使用标识模板,然后添加XPath以查找所需的特定节点:
<xsl:template match="//strong/font">
<xsl:copy>
<!-- Insert the replacement text here -->
</xsl:copy>
</xsl:template>
在使用XML时,这将是一个可维护、可扩展的解决方案。您需要几个相关但不连续的功能:
- 搜索和替换内容
- 搜索和替换格式
- 搜索并替换相似的内容(即忽略空白中的细微差异)
文本和格式错误的表示时,需要捕获文本,其中标记没有正确嵌套,例如文本
其中一种方法是预解析字符串并对每个字符应用格式样式。所以你会有一个粗体和斜体的t,一个粗体和斜体的e,等等。为了使这更容易和更快,使用散列来表示样式组合-读取第一个字符,找出它是什么样式(跟踪打开和关闭样式,然后找到标记),如果它已经存在于散列中,将该散列数指定给该字母。如果没有,则获取新的哈希数并分配它
现在,您可以将字母及其样式哈希与搜索进行比较,并获得格式和内容匹配。把它放在类似的匹配项上,你就得到了你需要的东西
-Adam我需要一个例子。啊,现在他有两个问题。“以搜索文本部分的元素路径为例”我真的不明白你想说什么。你能举个简单的例子吗?