Maison > php教程 > php手册 > php获取301跳转URL

php获取301跳转URL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2016-06-13 10:19:14
original
946 Les gens l'ont consulté

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

/**

 * 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.1\r\n";

    $request .= 'Host: ' . $url_parts['host'] . "\r\n";

    $request .= "Connection: Close\r\n\r\n";

    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;

}

Copier après la connexion
php实现用socket获取301跳转地址,可以提取跳转过程中的url

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal