Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何提取网页摘要?_Php_String_Extract - Fatal编程技术网

Php 如何提取网页摘要?

Php 如何提取网页摘要?,php,string,extract,Php,String,Extract,我正在编写一个代码,从arxiv页面中提取摘要,例如页面,我感兴趣的是从“我们研究一个模型…”到“…compass Heisenberg模型”中提取文本。我的代码目前看起来像 $url="http://arxiv.org/abs/1207.0102"; $options = array( 'http'=>array( 'method'=>"GET", 'header'=>"User-Agent: Mozilla/5.0 (Windows NT 6.1; Tr

我正在编写一个代码,从arxiv页面中提取摘要,例如页面,我感兴趣的是从“我们研究一个模型…”到“…compass Heisenberg模型”中提取文本。我的代码目前看起来像

$url="http://arxiv.org/abs/1207.0102";
$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko\r\n"
  )
);
$context = stream_context_create($options);
$str = file_get_contents($url, false, $context);

if (preg_match('~<body[^>]*>(.*?)</body>~si', $str, $body))
{
    echo $body[1];
}
$url=”http://arxiv.org/abs/1207.0102";
$options=array(
“http'=>数组(
'方法'=>“获取”,
'header'=>“用户代理:Mozilla/5.0(Windows NT 6.1;Trident/7.0;rv:11.0)像Gecko\r\n”
)
);
$context=stream\u context\u create($options);
$str=file\u get\u contents($url,false,$context);
if(preg_匹配('~]*>(.*?~si',$str,$body))
{
echo$body[1];
}

问题是它提取了body标记中的所有内容。有没有一种方法可以只提取摘要?

最好的选择是使用DOM解析器,php至少有一个内置的解析器,但也有很多类可以执行类似的操作

使用DOM文档可以执行以下操作:

<?php
  $doc = new DOMDocument();
  $doc->loadHTML("<html><body>Test<br></body></html>");
  $text = $doc->getElementById("abstract");
?>

另一个选择是使用regex,这似乎是您已经在做的事情。正如你所看到的,它有点混乱,需要一些学习

谢谢。

preg_match(“~(.*?~si)”、$str、$body)-在这种情况下应该足够了,但每个人都会说:)