当前位置: 首页 > 面试题库 >

HTML中的全文搜索,忽略标签/&

林修真
2023-03-14
问题内容

我最近看到了很多用于在HTML页面中搜索和突出显示术语的库。但是,我看到的每个库都存在相同的问题,它们找不到部分用html标记封装的文本,并且/或者找不到包含&表示的特殊字符。

示例a:

<span> This is a test. This is a <b>test</b> too</span>

搜索“测试”将找到第一个实例,但找不到第二个实例。

示例b:

<span> Pencils in spanish are called l&aacute;pices</span>

搜索“lápices”或“ lapices”将不会产生结果。

有没有这样做的JS库,或者至少是一种避免这些障碍的方法?

提前致谢!


问题答案:

您可以window.find()在非IE浏览器中使用,也可以在IE中使用TextRangefindText()方法。这是一个例子:

不幸的是,在版本15中切换到Blink渲染引擎之前的Opera不支持window.findTextRange。如果您对此感到担忧,那么一个更重量级的选择是结合使用我的Rangy库的TextRange和CSS类应用程序模块

码:

function doSearch(text) {
    if (window.find && window.getSelection) {
        document.designMode = "on";
        var sel = window.getSelection();
        sel.collapse(document.body, 0);

        while (window.find(text)) {
            document.execCommand("HiliteColor", false, "yellow");
            sel.collapseToEnd();
        }
        document.designMode = "off";
    } else if (document.body.createTextRange) {
        var textRange = document.body.createTextRange();
        while (textRange.findText(text)) {
            textRange.execCommand("BackColor", false, "yellow");
            textRange.collapse(false);
        }
    }
}


 类似资料:
  • 问题内容: 如何 忽略 此preg_replace中的 html标签 。我有一个foreach函数来进行搜索,因此,如果有人搜索“苹果范围”,则preg_replace也会将范围应用于范围,并且html会中断: 提前致谢! 问题答案: 我假设您应该基于DOMDocument和DOMXPath而不是使用正则表达式来创建函数。即使那些功能非常强大,您也会遇到像您描述的问题那样的问题,这些问题不是(总是

  • 使用Umbraco v6,检查搜索(不是完整的Lucene查询)。这是一个拉丁/南美洲网站。我问过我的同事,他们如何在搜索/URL中键入标题(字母上的重音符号),他们都说他们没有,他们只使用“常规”字符(a-Z,a-Z)。 我知道在传递到Examine时如何从字符串中去掉特殊字符,但我需要另一种方法,如Examine从属性中删除特殊字符以匹配查询。我有许多“节点”的名称中有标题(这是我正在搜索的属

  • 有人能帮帮我吗?

  • 问题内容: 我想截断一些文本(从数据库或文本文件加载),但其中包含HTML,因此包含了标签,并且将返回较少的文本。然后,这可能导致标签未关闭或部分关闭(因此Tidy可能无法正常工作,并且内容仍然较少)。我如何基于文本截断(并且可能在到达表时停止,因为这可能会导致更复杂的问题)。 将导致: 我想要的是: 我怎样才能做到这一点? 虽然我的问题是有关如何在PHP中进行操作,但最好知道如何在C#中进行操作

  • 回顾 在前面的章节(分页),我们已经加强了数据库查询,因此能够在页面上获取各种查询。 今天,我们会继续探讨数据库的话题,只是领域不同。所有存储内容的应用程序必须提供搜索能力。 许多其它类型的网站可能使用了谷歌、必应等索引所有的内容并且提供查询结果。这个对于大多数静态页面的网站,像论坛,是很好用。我们应用程序 microblog 的基本单元是用户短小的 blog,不是整个页面。我们希望搜索结果是动态

  • 问题内容: HTML / CSS中是否有任何内容可以告诉浏览器完全忽略空格? 如此多次,当您想要将两个图像彼此并排放置时-拼命尝试使HTML可读,但是浏览器在它们之间放置了一个空格。 因此,而不是像这样: 你最终得到这个 真是太恐怖了! 问题答案: 哦,您只需一行CSS就可以轻松实现: 劣势,你问?尚无 浏览器实现此 极其有用的功能(通常考虑内联块)。 我有时会做些什么,尽管黑夜很丑,但还是要使用