使用PHP </div>获取<div>内容

时间:2014-07-27 19:18:11

标签: php parsing dom preg-match file-get-contents

我正在尝试通过<div>获取file_get_contents内的内容。我想要做的是从google.com上的div resultStats获取内容。我的问题是(afaik)打印它。

一些代码:

$data = file_get_contents("https://www.google.com/?gws_rd=cr&#q=" . $_GET['keyword'] . "&gws_rd=ssl");
preg_match("#<div id='resultStats'>(.*?)<\/div>#i", $data, $matches);

只需使用

print_r($matches);

只返回Array(),但我希望preg_match这个数字。任何帮助表示赞赏!

编辑:感谢您向我展示正确的方向!我摆脱了preg_调用,转而使用DOM。虽然我对PHP很陌生,这让我很头疼;我在Stack Overflow上找到了这个代码,我正在尝试编辑它以使其工作。到目前为止,我只收到一页空白,并且不知道我做错了什么。

$str = file_get_contents("https://www.google.com/search?source=hp&q=" . $_GET['keyword'] . "&gws_rd=ssl");
$DOM = new DOMDocument;   
@$dom->loadHTML($str);

//get
   $items = $DOM->getElementsByTagName('resultStats');

//print
   for ($i = 0; $i < $items->length; $i++)
        echo $items->item($i)->nodeValue . "<br/>";

} else { exit("No keyword!") ;}

1 个答案:

答案 0 :(得分:0)

代表OP发表。

我决定使用PHP Simple HTML DOM Parser,结果是这样的:

include_once('/simple_html_dom.php');
$setDomain = "https://www.google.com/search?source=hp&q=" . $_GET['keyword'] . "&gws_rd=ssl";
$str = file_get_html($setDomain);
$html = str_get_html($str);
$html->find('div div[id=resultStats]', 0)->innertext . '<br>';

问题解决了!