【问题标题】:Need to highlight overlapping text using PHP需要使用 PHP 突出显示重叠的文本
【发布时间】:2011-03-13 20:11:52
【问题描述】:

我正在寻找突出显示页面上某些文本的方法。在 preg_replace 函数的帮助下,我使用<span class="highlight">This is a sample</span> 替换找到的文本“This is a sample”。

当文本重叠时出现我的问题。如果我在同一页面上搜索短语“示例文本”,它不会突出显示。我需要高亮合并。

任何有关此问题的帮助将不胜感激。

谢谢!

【问题讨论】:

  • 如果您能提供您当前使用的代码,请详细说明“重叠”文本和合并高亮。
  • 您的意思是,如果您在第一次搜索时查找This is a sample,并且页面包含This is a sample text block你想返回这个:<span class="highlight">This is a sample</span> text block,然后如果你在同一页面上搜索示例文本,你想返回这个:<span class="highlight">This is a <span class="highlight">sample text</span></span> block - 嵌套突出显示?还是您希望第二个亮点在第一个亮点的基础上展开:<span class="highlight">This is a sample text</span> block
  • 我希望第二个突出显示以这种方式扩展第一个突出显示:这是一个示例文本

标签: php regex highlighting


【解决方案1】:

不要替换文本。查找需要突出显示的文本的位置,按开头对它们进行排序,并检查在该有序列表项中下一项的开头是否与上一项的结尾“重叠”。

文字:
This is a sample text.
0123456789...
要突出显示的项目:This isis a

我正在谈论的有序列表:[[0, 7], [5, 9]]。 5 和 7 “重叠”。

【讨论】:

  • 谢谢!这似乎是一个很好的建议。
【解决方案2】:

据我了解您的需求,我认为您需要拆分所有给您单词的句子,然后您可以单独突出显示它们。

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2013-05-29
    • 1970-01-01
    相关资源
    最近更新 更多