代码之家  ›  专栏  ›  技术社区  ›  sirrocco

查找和替换以及所见即所得编辑器

  •  1
  • sirrocco  · 技术社区  · 17 年前

    我有一个列:ProductName。现在,这里输入的文本是从tinyMCE输入的,所以它有各种标签。用户希望能够对所有产品进行查找和替换,并且必须支持着色。

    其他文本。。 <strong>text text <font color="#ff6600">colortext&reg;</font></strong> ..其他文本

    现在,用户想要替换:

    <font color="#ff6600">colortext&reg;</font>
    

    <strong>

    <strong><font color="#ff6600">colortext&reg;</font></strong>
    

    4 回复  |  直到 12 年前
        1
  •  2
  •   David Hanak    17 年前

    从搜索文本中删除HTML标签,然后先进行纯文本搜索。然后,逐个部分(即逐个文本节点),获取搜索文本各部分的元素路径,并将其与找到的文本中的对应部分进行比较。如果所有部分的路径都匹配,则完成。

    编辑 :我所说的路径是指类似于XPath的东西,或者TinyMCE编辑器的路径概念。示例:搜索文本的纯文本部分是“colortext®”。搜索文本中此文本节点的路径为 <strong>/<font color="#ff6600"> .在文本正文(trivial)中搜索相同的纯文本,并获取其路径,该路径也是 < / <strong>

        2
  •  1
  •   Adam Davis    17 年前

    • 搜索和替换内容
    • 搜索和替换格式
    • 搜索和替换相似项(即忽略空格中的微小差异)

    首先,看看类似的问题。进行忽略空格和大小写的搜索。如果你还需要处理“bowl”与“bowls”以及“intelligent”与“smart”之间的关系,你可能想进入Lucene或其他搜索引擎技术——尽管我预计这超出了你目前的需求。

    一旦你开始工作,它就成为你搜索堆栈中的一层。

    其次,查看格式搜索。这通常是使用标记或标签完成的,您已经以HTML的形式拥有了这些标记或标签。然而,你必须能够不按顺序处理事情——所以 <b><i>text</i></b> 需要在搜索中被抓住 <i><b>text</b></i> 以及标签嵌套不正确的格式错误表示,例如 <b><i>text</b></i> .

    其中一种方法是预解析字符串并将格式样式应用于每个字符。所以你会有一个粗体斜体的t,一个粗体粗体斜体的e,等等。为了使这更容易、更快,使用哈希来表示样式组合-读取第一个字符,找出它是什么样式(跟踪此打开和关闭的样式,然后找到标签),如果它已经存在于哈希中,则将该哈希号分配给字母。如果没有,则获取新的哈希值并分配。

    现在,您可以将字母及其样式哈希与您的搜索进行比较,并获得格式和内容匹配。把它放在你的类似匹配上,你就得到了你需要的东西。

    -亚当

        3
  •  1
  •   Jon W    17 年前

    使用标识模板,然后添加XPath以查找所需的特定节点:

    <xsl:template match="//strong/font">
        <xsl:copy>
            <!-- Insert the replacement text here -->
        </xsl:copy>
    </xsl:template>
    

    当使用XML时,这将是一个可维护、可扩展的解决方案。

        4
  •  -1
  •   claf    17 年前