2011-10-05 66 views
6

我使用下面的代碼高亮搜索結果中突出顯示搜索resuls:用繩子部分

$text = preg_replace("/\b($word)\b/i", '<span class="highlight_word">\1</span>', $text); 

,其工作的罰款。

但preg_replace返回整個字符串並突出顯示匹配的單詞。

我需要得到一部分字符串,只有整個字符串。

一個場景是在第一場比賽之前獲得100個字符和100個字符。任何幫助將不勝感激。

回答

8

如果你想100個字符之前和之後然後就從/\b($word)\b/i 改變你的正則表達式來/^.*?(.{0,100})\b($word)\b(.{0,100}).*?$/i

那麼你的更換而改變,以\1<span class="highlight_word">\2</span>\3

而乾脆: $text = preg_replace("/^.*?(.{0,100})\b($word)\b(.{0,100}).*?$/i", '\1<span class="highlight_word">\2</span>\3', $text);

編輯:海報後更新評論。這應該做你想做的。

Edit2:如果任何一邊沒有100個字符,則正則表達式會失敗。無論現在這個詞前後是否有100個字符,這一個都會起作用。如果少於100個字符,它們將全部匹配。

編輯3:更新回覆後海報評論。

+0

通過這種修改它突出顯示所有的字符串,但我想強調只有$詞,前後有100個,但不是highlighted.Thanks您的回覆 – ntan

+0

更新原來​​的答案,以更好地適應你想要的東西。 – jmlsteele

+0

它僅強調$字,但返回整個文本。它不返回100前後。我甚至更改爲{0,1}以查看會發生什麼,但仍然返回整個$文本 – ntan