PHP RegEx检索反向链接的数量

时间:2013-08-07 05:06:42

标签: php regex preg-match

我有这个代码查询Google以获取某个网站的反向链接数量。我想在我正在制作的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

2 个答案:

答案 0 :(得分:0)

检查你的模式..希望它应该是多变的..内部结果还有一个div就在那里..如果你给出了正确的模式,它将显示输出..还有一件事需要解码file_get_Contents($ url) 。删除base_64decode函数并尝试它。

答案 1 :(得分:0)

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

这个url只返回html,可以像你所做的那样用regex轻松解析。 Google将此网址用于不支持javascript的浏览器(尝试在浏览器上禁用javascript进行搜索)。普通网址(您使用的网址)返回一个复杂的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);
?>