0

我有一个内容描述和几个列出的词(“Google”和“Gmail”)。现在,如果这些词出现在内容描述中,那么我必须用它们的链接替换它们。我创建了一个正则表达式并使用 preg_match 成功替换了它们。但现在我想限制它们。例如:如果找到的 2 个单词非常接近,则不会被替换。我的描述如下:

“这是我对 Google 和 Gmail 的描述。我需要用它的链接和 Gmail 替换 Google”

现在我的要求是,First Gmail 不应该被替换,因为第一个“Google”离它很近(只有 1 个字的距离),其余的词应该被替换,因为它们之间的距离很远。所以我的结果应该是:

This is my description for <a href="google.com">Google</a> and Gmail. I need to replace <a href="google.com">Google</a> with its link and also <a href="gmail.com">Gmail</a>.

我使用了前瞻匹配,但它不起作用。

4

1 回答 1

0

好的,我得到了解决方案。

我对每个单词一个一个地使用 preg_match_all,然后维护一个带有偏移量的匹配单词数组(PREG_OFFSET_CAPTURE)。

现在我管理了一个包含位置的所有匹配单词的列表,并根据单词的权重对该列表进行排序。现在我们可以使用任何算法来跟踪文本中的最近替换。我做了以下事情:

1: Replace first list word in body and maintain a temp tracking  array with position of this word.
2: For second word in list, first check the temp tracking array and find nearest position of second word. Now you can find words between first word and second word using str_word_count function.
3: Now do this for all words in list.
于 2013-04-02T09:26:28.417 回答