日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

PHP如何獲取短網(wǎng)址跳轉(zhuǎn)之前的網(wǎng)址?

 董小寶的日常 2021-07-18

現(xiàn)在有很多的短網(wǎng)址應(yīng)用,點擊就跳轉(zhuǎn)到縮短之前的網(wǎng)址了,那今天我們就來看一下,PHP如何獲取短網(wǎng)址跳轉(zhuǎn)之前的網(wǎng)址,其實也很簡單,就是用php的get_headers 函數(shù),取得Response Headers,之后慢慢分析就行了。

給出具體實現(xiàn)方法,代碼如下:

<?php

$header = get_headers($url, 1);

if (strpos($header[0], '301') || strpos($header[0], '302')) {

    if (is_array($header['Location'])) {

        return $header['Location'][count($header['Location']) - 1];

    } else {

        return $header['Location'];

    }

} else {

    return $url;

}

?>

實例二,代碼如下:

<?php

echo get_redirect_url('https://www./');

//輸出結(jié)果類似的為:https://www./novel/22505.html

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;

    }

}

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多