Rumah > php教程 > PHP源码 > php 版获取重定向后的地址

php 版获取重定向后的地址

PHP中文网
Lepaskan: 2016-05-25 17:15:12
asal
2136 orang telah melayarinya

php 版获取重定向后的地址

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

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

<?php

//取重定向的地址

class RedirectUrl{

    //地址

    var $url;

    //初始化地址

    function RedirectUrl($url){

        $this->url = $url;

    }

    /**

     * get_redirect_url()

     * 取重定向的地址

     *

     * @param string $url

     * @return string

     */

    private function get_redirect_url($url){

        $redirect_url = null;

  

        $url_parts = @parse_url($url);

        if (!$url_parts) return false;

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

        if (!isset($url_parts[&#39;path&#39;])) $url_parts[&#39;path&#39;] = &#39;/&#39;;

  

        $sock = fsockopen($url_parts[&#39;host&#39;], (isset($url_parts[&#39;port&#39;]) ?

        (int)$url_parts[&#39;port&#39;] : 80), $errno, $errstr, 30);

        if (!$sock) return false;

  

        $request = "HEAD " . $url_parts[&#39;path&#39;] . (isset($url_parts[&#39;query&#39;]) ? &#39;?&#39;.$url_parts[&#39;query&#39;] : &#39;&#39;) .

         " HTTP/1.1\r\n";

        $request .= &#39;Host: &#39; . $url_parts[&#39;host&#39;] . "\r\n";

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

        fwrite($sock, $request);

        $response = &#39;&#39;;

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

        fclose($sock);

  

        if (preg_match(&#39;/^Location: (.+?)$/m&#39;, $response, $matches)){

            return trim($matches[1]);

        } else {

            return false;

        }

    }

  

    /**

     * get_all_redirects()

     * 取所有重定向地址

     *

     * @param string $url

     * @return array

     */

    private function get_all_redirects($url){

        $redirects = array();

        while ($newurl = $this->get_redirect_url($url)){

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

                break;

            }

            $redirects[] = $newurl;

            $url = $newurl;

        }

        return $redirects;

    }

  

    /**

     * get_final_url()

     * 取实际地址

     *

     * @param string $url

     * @return string

     */

    function get_final_url(){

        $redirects = $this->get_all_redirects($this->url);

  

        if (count($redirects)>0){

            return array_pop($redirects);

        } else {

            return $this->url;

        }

    }

}

  

/**

 * get_show_pic

 * 取最终要显示的图片地址

 *

 * @param string $url

 * @return  string

 */

function get_show_pic($url,$noimg = &#39;noimg.gif&#39;,

$newimg="http://special.ku6img.com/projects/2010/d-color/images/slt-1.jpg"){

    $obj = new RedirectUrl($url);

  

    $realurl = $obj->get_final_url();

  

    if(strpos($realurl,$noimg)>0){

        return $newimg;

    }

    return $url;

}

//参考

echo "<img src=&#39;".get_show_pic("http://i2.ku6img.com/encode/picpath/2010/12/9/14/1294948410019/5.jpg")."&#39;/>";

?>

Salin selepas log masuk

2.PHP代码

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

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

<?php

//取重定向的地址

class RedirectUrl{

    //地址

    var $url;

    //初始化地址

    function RedirectUrl($url){

        $this->url = $url;

    }

    /**

     * get_redirect_url()

     * 取重定向的地址

     *

     * @param string $url

     * @return string

     */

    private function get_redirect_url($url){

        $redirect_url = null;

  

        $url_parts = @parse_url($url);

        if (!$url_parts) return false;

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

        if (!isset($url_parts[&#39;path&#39;])) $url_parts[&#39;path&#39;] = &#39;/&#39;;

  

        $sock = fsockopen($url_parts[&#39;host&#39;], (isset($url_parts[&#39;port&#39;]) ? (int)$url_parts[&#39;port&#39;] : 80),

         $errno, $errstr, 30);

        if (!$sock) return false;

  

    $request = "HEAD " . $url_parts[&#39;path&#39;] . (isset($url_parts[&#39;query&#39;]) ?

    &#39;?&#39;.$url_parts[&#39;query&#39;] : &#39;&#39;) . " HTTP/1.1\r\n";

        $request .= &#39;Host: &#39; . $url_parts[&#39;host&#39;] . "\r\n";

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

        fwrite($sock, $request);

        $response = &#39;&#39;;

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

        fclose($sock);

  

        if (preg_match(&#39;/^Location: (.+?)$/m&#39;, $response, $matches)){

            return trim($matches[1]);

        } else {

            return false;

        }

    }

  

    /**

     * get_all_redirects()

     * 取所有重定向地址

     *

     * @param string $url

     * @return array

     */

    private function get_all_redirects($url){

        $redirects = array();

        while ($newurl = $this->get_redirect_url($url)){

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

                break;

            }

            $redirects[] = $newurl;

            $url = $newurl;

        }

        return $redirects;

    }

  

    /**

     * get_final_url()

     * 取实际地址

     *

     * @param string $url

     * @return string

     */

    function get_final_url(){

        $redirects = $this->get_all_redirects($this->url);

  

        if (count($redirects)>0){

            return array_pop($redirects);

        } else {

            return $this->url;

        }

    }

}

  

/**

 * get_show_pic

 * 取最终要显示的图片地址

 *

 * @param string $url

 * @return  string

 */

function get_show_pic($url,$noimg = &#39;noimg.gif&#39;,

$newimg="http://special.ku6img.com/projects/2010/d-color/images/slt-1.jpg"){

    $obj = new RedirectUrl($url);

  

    $realurl = $obj->get_final_url();

  

    if(strpos($realurl,$noimg)>0){

        return $newimg;

    }

    return $url;

}

//参考

echo "<img src=&#39;".get_show_pic("http://i2.ku6img.com/encode/picpath/2010/12/9/14/1294948410019/5.jpg")."&#39;/>";

?>

Salin selepas log masuk

 以上就是php 版获取重定向后的地址的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan