我正在使用以下代码突出显示搜索结果:
$text = preg_replace("/\b($word)\b/i", '<span class="highlight_word">\1</span>', $text);
并且工作正常。
但是preg_replace返回整个字符串并突出显示匹配的单词。
我需要获取字符串的一部分,只需要整个字符串。
场景是在第一场比赛之前获得100个字符和100个字符。任何帮助将不胜感激。
答案 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:海报评论后更新了答案。