使用字符串部分突出显示搜索结果

时间:2011-10-05 05:50:13

标签: php preg-replace

我正在使用以下代码突出显示搜索结果:

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

并且工作正常。

但是preg_replace返回整个字符串并突出显示匹配的单词。

我需要获取字符串的一部分,只需要整个字符串。

场景是在第一场比赛之前获得100个字符和100个字符。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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个字符,则将全部匹配。

Edit3:海报评论后更新了答案。