Php 在字符串中查找句子的开头

Php 在字符串中查找句子的开头,php,regex,Php,Regex,我想用标题和简短描述在网站中显示searchquery的结果。简短的描述应该是包含搜索词的页面的一小部分。我想做的是: 第页中的1条标签 2找到seachterm的第一个位置 3从这个位置往回看,找出句子的开头(如果有)。 4从步骤3中找到的位置开始,然后显示ie 200个字符 我需要一些关于步骤3的帮助。我想我需要一个正则表达式来找到第一个大写字母或圆点…我会这样做,我会解析页面 跳过所有以“开头的内容,我会这样做,我会解析页面 跳过所有以“开头的内容,即使这最终也会失败。考虑到“我们去了史密

我想用标题和简短描述在网站中显示searchquery的结果。简短的描述应该是包含搜索词的页面的一小部分。我想做的是: 第页中的1条标签 2找到seachterm的第一个位置 3从这个位置往回看,找出句子的开头(如果有)。 4从步骤3中找到的位置开始,然后显示ie 200个字符


我需要一些关于步骤3的帮助。我想我需要一个正则表达式来找到第一个大写字母或圆点…

我会这样做,我会解析页面


  • 跳过所有以“开头的内容,我会这样做,我会解析页面


  • 跳过所有以“开头的内容,即使这最终也会失败。考虑到“我们去了史密斯医生的办公室”这句话,如果你的搜索词是“办公室”,那么几乎你使用的任何标准都会给你“史密斯的办公室”作为你的句子。

    即使这样,最终也会失败。给出“我们去了史密斯医生的办公室”这句话,如果你的搜索词是“办公室”,那么几乎你使用的任何标准都会给你“史密斯办公室”作为你的句子。

    对于第3步:如果你颠倒了你想从那里向后搜索的子字符串,获取第一个“.”的位置,并从搜索字符串的位置子跟踪该值

    $offset = stripos( strrev(substr($string, $searchlocation)), '.');
    $startloc = $searchlocation - $offset;
    $finalstring = substr($string, $startloc, 200);
    

    那件事可能会推迟1点,但我想它会把工作做完的。似乎应该有一个较短的方法来执行此操作。

    对于第3步:如果您反转要从中向后搜索的子字符串,则获取第一个“.”的位置,并从搜索字符串的位置获取该值

    $offset = stripos( strrev(substr($string, $searchlocation)), '.');
    $startloc = $searchlocation - $offset;
    $finalstring = substr($string, $startloc, 200);
    

    那件事可能会推迟1点,但我想它会把工作做完的。似乎应该有一个更短的方法来做这件事。

    我想,与其试着找句子,不如考虑一下我需要的单词中搜索词周围的上下文数量。然后将这个单词数的一小部分往回走(或回到开头),将剩余的单词数向前走,以选择上下文的其余部分。通过这种方式,您只需在空白处分割整个语料库,找到第一个出现的术语(可能使用模糊匹配来查找子术语并解释标点符号),然后应用上述算法。如果第一个未选择的词不是以标点符号结尾,你甚至可以创造性地引入省略号。我想与其尝试查找句子,不如考虑搜索词周围的上下文数量,我需要在单词中使用。然后将这个单词数的一小部分往回走(或回到开头),将剩余的单词数向前走,以选择上下文的其余部分。通过这种方式,您只需在空白处分割整个语料库,找到第一个出现的术语(可能使用模糊匹配来查找子术语并解释标点符号),然后应用上述算法。如果第一个未选择的术语没有以标点符号结尾,你甚至可以创造性地引入省略号。

    詹姆斯·科伦的答案也适用于这里,这对史密斯博士的办公室来说仍然是失败的。詹姆斯·科伦的答案也适用于这里,这对史密斯博士的办公室来说仍然是失败的。我发布了一个策略上的轻微改变。。。你能看到其中的错误吗?我发布了一个对策略的轻微更改。。。你能看到那个里面有什么错误吗。