2013-04-03 39 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