2014-02-26 91 views
0

我一直在寻找正则表达式如何在PHP中工作,并且我有这个想法试图从维基百科中提取句子,如果它们包含搜索词。 到目前为止,我管理这个只提取句子: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); 

我设法弄清楚如何工作的,以及如何插入我的字符串过滤......但是,在以往任何时候我把它,它打破了正则表达式。

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

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

也许找到所有的句子,然后排除这些无字搜索。 – Robert

+0

请问我能否看到一些例子,正如我所说,我很新,缺乏对内部工作原理的了解 – Connor

+0

要排除那些没有搜索到的字词,我会使用一个foreach($ result){//包含$ search//不}}或沿着这些行 – Connor

回答

0

罗伯特是正确的。您必须比较您$string到相关$matches ...

例如,这样的事情:

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

好吧,那么一个foreach $匹配的伎俩? – Connor

+0

是的,它会。你可以使用strpos功能 – Robert

+0

我可以请你给我看看吗? – Connor