我在Best practices on displaying search results with associated text snippets from actual result
的stackoverflow上找到了这段代码然而,它并没有完全符合我的要求。它显示给定搜索词周围的文本,但有两个问题
1)我只想整个单词; 2)它不会限制搜索词后 后的字符,只会限制
之前的字符以下是代码。如何编辑它来解决这两个问题?提前致谢:
$text = 'This is an example text page with content. It could be red, green or blue or some other random color. It dont really matter.';
$keyword = 'red';
$size = 15; // size of snippet either side of keyword
$snippet = '...'.substr($text, strpos($text, $keyword) - $size, strpos($text, $keyword) + sizeof($keyword) + $size).'...';
$snippet = str_replace($keyword, '<strong>'.$keyword.'</strong>', $snippet);
echo $snippet;
答案 0 :(得分:1)
$snippet = preg_replace(
'/^.*?\s(.{0,'.$size.'})(\b'.$keyword.'\b)(.{0,'.$size.'})\s.*?$/',
'...$1<strong>$2</strong>$3...',
$text
);
这将产生:...It could be <strong>red</strong>, green or blue...
。这是\s
个字符类,在分词后限制15个字符出现。
答案 1 :(得分:0)
我在这里发了一个帖子: How to generate excerpt with most searched words in PHP?
我写过的最乱码可能对你有用。我真的很鼓励你分解我在那里重复的代码。