2013-04-03 4 views
1

Надеюсь, кто-то может помочь мне с этой маленькой проблемой ..?Извлечь оригинальный URL из ссылки Google Alerts

Я использую Google Alerts для публикации новостей на веб-сайте, к сожалению, когда я пытаюсь найти исходный URL (до Google Alerts), все, что я получаю, - это URL-адрес Google, как показано ниже;

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

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

& кт = га & хам = CAcQARgAIAAoATAAOABArOXtigVIAlAAWABiBWVuLVVT & кд = ZQHHhnCXS8w & USG = AFQjCNGGGZgSyC3KvMJUW0ICYsCtRZ2uJA

Я сломал этот адрес в соответствующие разделы, чтобы облегчить чтобы следовать, первая часть всегда точно такая же, однако вторая & 3-я части меняются. Третья часть, однако, всегда начинается с & ct = что я предполагаю, является частью запроса ..?

В сценарии, который я использую, весь этот URL присваивается как $ link &, что я хотел бы сделать, если это возможно, - извлечь исходный URL-адрес из URL-адреса Google Alerts, чтобы атрибуция проходила там, где это предназначено go & не парню посередине!

Мои знания 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; 
    } 

Использование простое. Если мы хотим, чтобы принести последний эффективный URL для изображения профиля Марка Цукерберга мы называем функцию, как это:

$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