ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルで 301 ジャンプ URL を取得する簡単な例

php_PHP チュートリアルで 301 ジャンプ URL を取得する簡単な例

WBOY
WBOYオリジナル
2016-07-13 17:18:13749ブラウズ

复制代码代码如下:

/**
* get_redirect_url()
* 指定された URL のリダイレクト先のアドレスを取得します。
* またはリダイレクトがない場合は FALSE を取得します。
*
* @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; //相対 URL は処理できません
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['パス'] 。 (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') 。 「HTTP/1.1rn」;
$request .= 'ホスト: ' . $url_parts['ホスト'] 。 "rn";
$request .= "接続: 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[ 'スキーム'] 。 「://」。 $url_parts['ホスト'] 。 rim($matches[1]);
else
returnrim($matches[1]);

} else {
return false;
}

}
/**
* get_all_redirects()
* 指定された 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[] = $新しいURL ;
$url = $newurl;
}
return $redirects;
}


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

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/621688.html技術記事 /** * get_redirect_url() * 指定された URL のリダイレクト先のアドレスを取得します。 * リダイレクトがない場合は FALSE を返します。 * * @param string $url * @return string...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。