【发布时间】:2017-04-26 19:55:49
【问题描述】:
经过一番搜索和谷歌搜索后,我找到了用于在类似于以下文本的文本中突出显示和限制搜索结果的代码:
$text = preg_replace("/^.*?(.{0,100})\b($word)\b(.{0,100}).*?$/mi", '\1<span class="highlight_word">\2</span>\3', $text);
不幸的是,即使$word 的内容按预期放置在范围内,我总是会得到完整的$text。
我现在的问题是如何将$text 的内容减少到仅在搜索结果前后显示 100 个字符($word 的内容)。
我还使用门户网站检查了几个变体中的正则表达式并得到了所需的结果。尽管如此,我的 php 代码并没有显示预期的内容。
任何帮助都非常感谢,因为我认为我这边有一个非常愚蠢的错误。
【问题讨论】:
-
这和mysql有什么关系?
$text是什么?打算做什么以及显示什么? -
在你的preg_replace之后,获取$word的位置,然后使用substr获取之前的100和之后的100。 IOW,如果 $p1 = $word 在 $text 中的位置,$rslt = substr($text,$p1 - 100, 200 + strlen($word)) 或类似的。