从Google快讯链接中提取原始网址

时间:2013-04-03 01:47:54

标签: url extract

我希望有人可以帮我解决这个小问题..?

我正在使用Google快讯将重大新闻故事列入网站列表,不幸的是,当我尝试查找原始网址时(Google快讯之前),我得到的只是Google网址,如下所示;

http://www.google.com/url?sa=X&q=

http://www.source.com/2013/04/02/title.html

&安培; CT = GA&安培; CAD = CAcQARgAIAAoATAAOABArOXtigVIAlAAWABiBWVuLVVT&安培; CD = ZQHHhnCXS8w&安培; USG = AFQjCNGGGZgSyC3KvMJUW0ICYsCtRZ2uJA

我已将此网址分解为相关部分,以便更容易理解,第1部分始终完全相同,但是第2部分和第2部分第三部分做了改变。然而,第三部分始终以& ct =开头,我认为它是查询的一部分......?

在我使用的脚本中,整个网址被指定为$ link&如果可能的话,我想要做的是从Google快讯网址中提取原始来源网址,以便归因于其意图去往的地方。不是中间人!

我的PHP知识非常基础,所以对此的任何帮助都将非常感激。

由于

1 个答案:

答案 0 :(得分:0)

你可以使用这个基本上取起始URL的函数,跟随所有重定向并返回它的最后一个有效URL。

/**
 * Get target url from a redirect
 *
 * @param string $url Source url
 * @return string
 */

function getLastEffectiveUrl($url) {

    // initialize cURL
    $curl = curl_init($url);
    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER  => true,
        CURLOPT_FOLLOWLOCATION  => true,
    ));

    // execute the request
    $result = curl_exec($curl);

    // fail if the request was not successful
    if ($result === false) {
        curl_close($curl);
        return null;
    }

    // extract the target url
    $redirectUrl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
    curl_close($curl);

        return $redirectUrl;
    }

用法很简单。如果我们想获取Mark Zuckerberg的个人资料图片的最后一个有效网址,我们会调用这样的函数:

    $lastEffectiveUrl = getLastEffectiveUrl('http://graph.facebook.com/4/picture');

调用后$lastEffectiveUrl的值将是预期值:

    'http://profile.ak.fbcdn.net/hprofile-ak-snc4/157340_4_3955636_q.jpg';

所有信用是为了写这篇文章的人,我只是做了一点挖掘:Get the last effective URL from a series of redirects for the given URL