strpos() 显示指定单词前后的n个字符

strpos() show n character before and after specified word

我写了一个简单的搜索引擎,想在结果中显示一些文本,实际上我想在 SEARCH QUERY 之前显示 200 个字符,在 SEARCH QUERY 之后显示 200 个字符。

示例:

搜索查询:测试

结果:

BLAH BLAH BLAH BLAH BLAH BLAHBLAH BLAH BLAHBLAH BLAH BLAHBLAH BLAH BLAHBLAH BLAH BLAHBLAH BLAH BLAH BLAH BLAH BLAH TEST BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH BLAH.

我想要这个输出:

... BLAH BLAH BLAH BLAH TEST BLAH BLAH BLAH BLAH ...

前后各3个点

$text= $row["text"];
$find = $term;
$result = strpos($text, $find);

但我不知道如何将其设置为在 $text 中显示 $term 之前的 200 个字符和 $term 之后的 200 个字符。

你可以使用substr()

substr()函数returns字符串的一部分。

substr(string,start,length) 

阅读more

从文本位置开始。负 200(length) 将得到之前的字符,加上 200(length) 将得到它之后的字符(这里添加了文本长度,因为我们从 $text 的第一个字母开始)

$text= $row["text"];
$find = $term;
$result = strpos($text, $find);
echo substr($text,($result-200>0)?($result-200):0,200)." ".$find." "
.substr($text,$result+strlen($find),200);