0

コンテンツの説明といくつかの単語 (「Google」と「Gmail」) がリストされています。これらの単語がコンテンツの説明に表示されている場合は、リンクに置き換える必要があります。正規表現を作成し、preg_match を使用して正常に置き換えました。しかし今、私はそれらを制限したいと思います。例: 見つかった 2 つの単語が非常に近い場合、これは置き換えられません。私の説明は次のとおりです。

「これは Google と Gmail の説明です。Google をそのリンクと Gmail に置き換える必要があります」

私の要件は、最初の「Google」が非常に近いため(1単語の距離のみ)、最初のGmailを置き換える必要がなく、残りの単語は互いに非常に離れているため置き換える必要があるということです。したがって、私の結果は次のようになります。

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 を 1 つずつ使用し、一致した単語の配列をオフセット (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 に答える