我有这个代码查询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
答案 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);
?>