我希望有人可以帮我解决这个小问题..?
我正在使用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知识非常基础,所以对此的任何帮助都将非常感激。
由于
答案 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