2013-04-03 40 views
1

我希望有人能帮助我解决这个小问题..?从Google快讯链接中提取原始网址

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

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

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

&克拉=ガ& CAD = CAcQARgAIAAoATAAOABArOXtigVIAlAAWABiBWVuLVVT & CD = ZQHHhnCXS8w & USG = AFQjCNGGGZgSyC3KvMJUW0ICYsCtRZ2uJA

我打破了这个链接到相关的部分,使其更容易接下来,第一部分总是完全一样,但是第二部分&第三部分做改变。然而,第三部分总是以& ct =开头,我认为它是查询的一部分。

在我使用的脚本中,这整个网址被分配为$ link &如果可能,我想要做的是从Google Alerts网址中提取原始源网址,以便归因到达目的地去&不是中间的人!

我的PHP知识是非常基本的,所以任何帮助将不胜感激。

感谢

回答

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; 
    } 

用法很简单。如果我们想要获取的马克·扎克伯格的个人形象在过去有效的网址,我们会调用该函数是这样的:

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

$lastEffectiveUrl了呼叫之后,值将是预期的:

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

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