php - 在搜索词周围显示文本的问题

时间:2010-10-19 18:22:15

标签: php

我在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; 

2 个答案:

答案 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?

我写过的最乱码可能对你有用。我真的很鼓励你分解我在那里重复的代码。