如何像搜索引擎一样显示搜索结果


PHP How to show search results like search engine

我的网站有一个搜索页面。
我不想在结果中显示整个句子,我想以"Google style"显示它:
前5个字符,后5个字符…
依此类推,对于在句子中找到的每个单词。

$teksto="bla1 bla2 bla3 bla4 bla5 Bingo bla6 bla7 bla8 bla9 bla10 Bingo bla11 bla12 Bingo bla13 bla14 bla15";
$serchu="bingo";
$teksto=preg_replace("/['s]{1,}/is",' ',$teksto); // (form multispaces, breaklines, etc. to just 1 space)
echo preg_replace("/(.{0,5})($serchu)(.{0,5})/is"," ...$1<b>$2</b>$3... &nbsp;&nbsp;",$texto);

结果是:
Bla1 bla2 bla3 bla4…bla5 Bingo bla6…bla7 bla8 bla9 b…la10 Bingo bla1…1 b…la12 Bingo bla1…3 bla14 bla15

我希望结果可以是:
…bla5 Bingo bla6... ...la10 Bingo bla1... ...la12 Bingo bla1…

换句话说,我不希望在开头或结尾出现其他单词

与其替换内容,不如尝试只匹配匹配的单词并在其周围打印一些上下文。这将搜索所有出现的$serchu,其前后各有5个字符,并将结果与"…"放在一起:

preg_match_all("/.....$serchu...../i", $teksto, $matches);
echo implode('...', $matches[0]);
结果:

 bla5 Bingo bla6...la10 Bingo bla1...la12 Bingo bla1

$serchu只是在字符串的开始或结束时,这不起作用,但我认为您将比preg_replace更成功地修复这种方法。