手机
当前位置:查字典教程网 >编程开发 >php教程 >php获取301跳转URL简单实例
php获取301跳转URL简单实例
摘要:复制代码代码如下:/***get_redirect_url()*GetstheaddressthattheprovidedURLredire...

复制代码 代码如下:

/**

* get_redirect_url()

* Gets the address that the provided URL redirects to,

* or FALSE if there's no redirect.

*

* @param string $url

* @return string

*/

function get_redirect_url($url){

$redirect_url = null;

$url_parts = @parse_url($url);

if (!$url_parts) return false;

if (!isset($url_parts['host'])) return false; //can't process relative URLs

if (!isset($url_parts['path'])) $url_parts['path'] = '/';

$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);

if (!$sock) return false;

$request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1rn";

$request .= 'Host: ' . $url_parts['host'] . "rn";

$request .= "Connection: Closernrn";

fwrite($sock, $request);

$response = '';

while(!feof($sock)) $response .= fread($sock, 8192);

fclose($sock);

if (preg_match('/^Location: (.+?)$/m', $response, $matches)){

if ( substr($matches[1], 0, 1) == "/" )

return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]);

else

return trim($matches[1]);

} else {

return false;

}

}

/**

* get_all_redirects()

* Follows and collects all redirects, in order, for the given URL.

*

* @param string $url

* @return array

*/

function get_all_redirects($url){

$redirects = array();

while ($newurl = get_redirect_url($url)){

if (in_array($newurl, $redirects)){

break;

}

$redirects[] = $newurl;

$url = $newurl;

}

return $redirects;

}

php实现用socket获取301跳转地址,可以提取跳转过程中的url

【php获取301跳转URL简单实例】相关文章:

PHP中的traits简单使用实例

php中smarty变量修饰用法实例分析

自动跳转中英文页面

php获取json数据所有的节点路径

php简单smarty入门程序实例

php实现递归抓取网页类实例

php开发中的页面跳转方法总结

php中smarty模板条件判断用法实例

php简单实现多字节字符串翻转的方法

PHP生成器简单实例

精品推荐
分类导航