我有一个从搜索查询返回的文本正文,我们称之为$ body。现在,我想要做的是让脚本找到第一次出现的搜索查询$ query。我知道我可以通过strripos找到第一次出现这种情况。
一旦找到,我希望脚本在第一次出现字符串之前返回几个单词,并在第一次出现之后返回几个单词。
基本上我正在努力做谷歌用它的搜索结果做的事情。
关于我应该从哪里开始的任何想法?我的问题是我不断回复部分词语。
答案 0 :(得分:3)
你可以:
$words = explode(" ", $body);
创建$ body中单词的数组。
$index = array_search($query, $words);
$string = $words[$index - 1]." ".$words[$index]." ".$words[$index + 1];
但如果查询超过1个单词,你就会遇到麻烦。
答案 1 :(得分:2)
在我看来,您可以使用strpos
查找搜索字词的开头,并使用strlen
来查找其长度,这样可以让您...
strpos
+ strlen
之后显示
该数组中的第一个单词。或者,如果您在搜索词之前和之后已经掌握了一些字符数,那么如果您将这些字符分解为数组,则可以提取一两个字。
答案 2 :(得分:1)
我不懂PHP,但是如果你可以使用正则表达式,你可以使用以下方法:
string query = "search";
int numberOfWords = 2;
Regex(
"([^ \t]+\s+){"
+ numberOfWords
+ "}\w*"
+ query
+ "\w*(\s+[^ \t]+){"
+ numberOfWords
+ "}"
);
答案 3 :(得分:0)
两边几句话怎么样:
<?php
$subject= "Four score and seven years ago, our forefathers brought forth upon this continent a new nation";
$pattern= "/(\w+\s){3}forth(\s\w+){3}/";
preg_match($pattern, $subject, $matches);
echo("... $matches[0] ...");
给出:
... our forefathers brought forth upon this continent ...