Php正则表达式 - 提取包含字符串的句子

时间:2014-02-26 13:19:38

标签: php regex

我最近一直在研究正则表达式如何在php中工作,如果它们包含搜索词,我有这个想法试图从维基百科中提取句子。 到目前为止,我设法只提取句子:

$content = $wdata->query->pages->$wpageid->extract; 
preg_match_all('/(?<=[.?!]|^).*?(?=([.?!])\s{0,3}[A-Z]|$)/s',$content,$matches);
echo "<pre>";
for($i=0;$i<count($matches[0]);$i++)
$result[] = trim($matches[0][$i]).$matches[1][$i];
print_r($result);

我已经设法弄清楚它是如何工作的,以及如何插入我的字符串来过滤......但是,无论我把它放在哪里,它都打破了正则表达式。

所以,我的字符串是$ search,我的问题;我是不是把它放在正则表达式中,或者我怎样才能让它不仅找到句子,而且在某处用$ search搜索句子。

preg_match_all('/(?<=[.?!]|^).*?(?=([.?!])\s{0,3}[A-Z]|$)/s',$content,$matches);

('.$search.')

修改

好的,我正在尝试使用:

$content = $wdata->query->pages->$wpageid->extract; 
preg_match_all('/(?<=[.?!]|^).*?(?=([.?!])\s{0,3}[A-Z]|$)/s', $content, $matches);
foreach ($matches[1] as $match) {
    if (strpos($match, $search)) {
        print $match;
    }
}

但我得到一个空白页

1 个答案:

答案 0 :(得分:0)

罗伯特是对的。您必须将$string与相关的$matches ...

进行比较

例如,像这样:

preg_match_all($pattern, $content, $matches);
foreach ($matches[1] as $match) {
    if ($match === $string) {
        print "$string found!";
    }
}