我一直在学习如何使用正则表达式,我认为开始在维基百科页面上搜索包含$ search的句子是个好主意。
到目前为止,我设法弄清楚得到的句子的一半,但我只是想知道如何只获得带有$ search的句子。
$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字符合适。
我想知道如何检查或只用$ search来获取句子。
在正则表达式('.$search.')
中粘贴/(?<=[.?!]|^).*?(?=([.?!])\s{0,3}[A-Z]|$)/s
应该很简单,但正如我所说,我是正则表达式的新手,我不知道在哪里放,也就是说那会有用。
非常感谢你们的任何帮助!
修改 此外,如果它不是太麻烦,维基百科部分保留,并且由于某种原因,一些线不是阵列的一部分(见照片)。
答案 0 :(得分:1)
如果您已经有一个句子列表,请使用FOR循环仅过滤相关的句子,即stripos()函数。你真的不需要把你的$ search放在正则表达式中。
编辑,例如:
for($i=0;$i<count($matches[0]);$i++)
{
$sentence = trim($matches[0][$i]).$matches[1][$i];
if (stripos($sentence, $search) !== false)
$result[] = $sentence;
}