0

我有这段代码可以查询谷歌以获取某个网站的反向链接数量。我想在我正在制作的 SEO 报告生成器中使用它。问题是我无法让 preg_match 正常工作。需要帮忙。

<?php
    $q = "http://zetcode.com/";
    $url = "http://www.google.com/search?hl=en&safe=off&q=link%3A".urlencode($q)."&btnG=Search";
    $content = file_get_contents($url);
    $pattern = "/(<div id=\"resultStats\">About ([0-9,]+) results<nobr>)|(<div id=\"resultStats\">([0-9,]+) results<nobr>)/";
    preg_match($pattern, $content, $out);
    $googlelinks = $out[count($out)-1];
    var_dump($out);
?>

这是一个示例 HTML 检索内容: http: //pastebin.com/EMaJmCkJ

4

2 回答 2

0

请改用此搜索网址: https ://www.google.co.in/search?output=search&sclient=psy-ab&q=link:facebook.com

这个 url 只返回 html,它可以像你一样用正则表达式轻松解析。Google 将此网址用于不支持 javascript 的浏览器(尝试在您的浏览器上禁用 javascript 进行搜索)。正常的 url(你使用的那个)返回一个看起来很复杂的 javascript,然后创建你在页面上看到的 html。

<?php
    $q = "http://zetcode.com/";
    $url = "https://www.google.co.in/search?output=search&sclient=psy-ab&q=link%3A".urlencode($q);
    $content = file_get_contents($url);
    $pattern = "/(<div id=\"resultStats\">About ([0-9,]+) results)|(<div id=\"resultStats\">([0-9,]+) results)/";
    preg_match($pattern, $content, $out);
    $googlelinks = $out[count($out)-1];
    var_dump($out);
?>
于 2013-08-07T05:55:21.237 回答
0

检查您的模式..希望它应该有所不同..在 resultStats 内还有一个 div ..如果您提供正确的模式,它将显示输出..还有一件事不需要解码 file_get_Contents($url).remove base_64decode 函数并尝试一下。

于 2013-08-07T05:34:05.253 回答