我必须从给定字符串中获取一个完整的句子,其中必须存在所需的字符。比如说我有一个搜索关键词“不同的主题”,我在“我们的社区是由帮助中心的一组特定主题定义的;请坚持这些主题并避免如果您的问题是关于网站本身,请在我们的元讨论网站上询问。如果您正在寻找其他主题,可能会在另一个Stack Exchange网站上进行讨论。 “
在我搜索之后,我希望它返回完整句子“ *如果您正在寻找不同的主题,它可能会被另一个Stack Exchange网站覆盖。* “
这是包含我的搜索键的完整句子。
我已经使用了以下内容但没有得到正确的输出:
substr($fp, strpos($fp, $search_string) - 100, 200).
这都是PHP。
答案 0 :(得分:3)
你真的不能用substr()
做到这一点,但你可以使用一点正则表达式:
[A-Z][^\\.;]*(different topic)[^\\.;]*
这是EXAMPLE
如果您需要句子末尾的句点,请稍微修改正则表达式,以删除词组末尾的字符匹配句点,[^\\;]
而不是[^\\.;]
[A-Z][^\\.;]*(different topic)[^\\;]*
答案 1 :(得分:0)
我使用以下代码解决了我的问题: -
而不是: - substr($ fp,strpos($ fp,$ search_string) - 100,200);
我使用以下内容来获取包含我的搜索键的完整单词的句子: -
$sentences = explode('.',$fp);
$subString = "";
foreach($sentences as $sentence) {
if(false !== stripos($sentence,$search_string)){
$subString = trim($sentence) . "\n";
}
}
这有助于我获得正确的结果。