【问题标题】:How to get the final url from google search result in PHP如何在 PHP 中从谷歌搜索结果中获取最终 url
【发布时间】:2013-06-05 14:48:47
【问题描述】:

使用 PHP 如何从 Google 搜索结果中获取最终的 url 目的地?例如

我想得到

http://www.windowsphone.com/en-us/how-to/wp8/start/whats-new-in-windows-phone

来自

http://www.google.com.my/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC4QFjAA&url=http%3A%2F%2Fwww.windowsphone.com%2Fen-us%2Fhow-to%2Fwp8%2Fstart%2Fwhats-new-in-windows-phone&ei=U0-vUa7HDseOrQenzIGIAg&usg=AFQjCNE7USUy5FcCHAIPreZ7UXBCQ8JUcg&sig2=NwHO-_b51du7XRiknzniXA&bvm=bv.47380653,d.bmk

更新

到目前为止,我已经尝试了以下方法,但它不适用于 Google 搜索结果链接

<?php
$ch = curl_init("http://www.google.com.my/url?sa=t&etc...");

curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$header = "Location: ";
$pos = strpos($response, $header);
$pos += strlen($header);
$redirect_url = substr($response, $pos, strpos($response, "\r\n", $pos)-$pos);
echo $redirect_url;
?>

【问题讨论】:

  • 到目前为止你做了什么?
  • 我已经更新了我的问题
  • 你的问题是什么:获取带有结果的页面并找到 url(谷歌可以为人类和程序发送不同的结果) - 或者 - 从字符串 http://www.google.com.my/url... 中删除字符串 http://www.windowsphone.com...
  • 我想自动完成。我正在创建一个浏览器应用程序,以便谷歌将结果发送给人类。
  • 各位,您认为“/en-us/how-to/wp8/start/”是目录吗?

标签: php url redirect search-engine


【解决方案1】:

这个怎么样。少一点代码。不需要foreach。

$url = "http://www.google.com.my/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC4QFjAA&url=http%3A%2F%2Fwww.windowsphone.com%2Fen-us%2Fhow-to%2Fwp8%2Fstart%2Fwhats-new-in-windows-phone&ei=U0-vUa7HDseOrQenzIGIAg&usg=AFQjCNE7USUy5FcCHAIPreZ7UXBCQ8JUcg&sig2=NwHO-_b51du7XRiknzniXA&bvm=bv.47380653,d.bmk";

$query = parse_url($url, PHP_URL_QUERY );
parse_str($query, $link);

echo $link["url"];

【讨论】:

    【解决方案2】:

    您似乎只是想从另一个地址中提取和解码地址的一部分。

    试试这个:

    $url = "http://www.google.com.my/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC4QFjAA&url=http%3A%2F%2Fwww.windowsphone.com%2Fen-us%2Fhow-to%2Fwp8%2Fstart%2Fwhats-new-in-windows-phone&ei=U0-vUa7HDseOrQenzIGIAg&usg=AFQjCNE7USUy5FcCHAIPreZ7UXBCQ8JUcg&sig2=NwHO-_b51du7XRiknzniXA&bvm=bv.47380653,d.bmk"
    $parsed = parse_url($url);
    $args = explode('&',$parsed['query']);
    foreach($args as $arg) {
        list($name,$val) = explode('=',$arg,2);
        if($name !== 'url') continue;
        $url = urldecode($val);
        break;
    }
    echo $url;
    

    【讨论】:

      猜你喜欢
      • 2015-12-29
      • 2011-05-03
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 2012-10-19
      相关资源
      最近更新 更多