Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我的网站上有一个搜索页面。
我不想在结果中显示整个句子,而是想以“ Google风格”显示:
前5个字符,突出显示的单词,后5个字符...
依此类推,对于句子中找到的每个单词。
结果是:
bla1 bla2 bla3 bla4 ... bla5宾果bla6 ... bla7 bla8 bla9 b ... la10宾果bla1 ... 1 b ... la12宾果bla1 ... 3 bla14 bla15
我希望结果可能是:
... bla5 Bingo bla6 ...... la10 Bingo bla1 ...... la12 Bingo bla1 ...
换句话说,我不想在开始或结束时使用其他词。
MySQL解决方案也受到赞赏。
结果:
当
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我的网站上有一个搜索页面。
我不想在结果中显示整个句子,而是想以“ Google风格”显示:
前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... ",$texto);
结果是:
bla1 bla2 bla3 bla4 ... bla5宾果bla6 ... bla7 bla8 bla9 b ... la10宾果bla1 ... 1 b ... la12宾果bla1 ... 3 bla14 bla15
我希望结果可能是:
... bla5 Bingo bla6 ...... la10 Bingo bla1 ...... la12 Bingo bla1 ...
换句话说,我不想在开始或结束时使用其他词。
MySQL解决方案也受到赞赏。
最佳答案
而不是替换事物,请尝试仅匹配匹配的单词并在其周围打印一些上下文。这将搜索所有出现的$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
在修复此问题上取得更大的成功。关于php - PHP如何显示搜索结果,如搜索引擎,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24063396/
10-10 15:36