本文实例讲述了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
|
<?php
$info1 = '亲!暂不能解析此类短网址。' ;
$info2 = '亲!网址解析失败,请重试。' ;
$info3 = '<br/><b><a href="' ;
$info4 = '" target="_blank">立即访问>></a></b>' ;
$info5 = '亲!不是短网址或无效。' ;
function unshort( $url )
{
global $info1 , $info2 , $info3 , $info4 ;
$curl = curl_init();
curl_setopt( $curl , CURLOPT_URL, $url );
curl_setopt( $curl , CURLOPT_RETURNTRANSFER,1);
curl_setopt ( $curl , CURLOPT_USERAGENT, 'Mozilla/8.0 (compatible; MSIE 8.0; Windows 7' );
curl_setopt( $curl , CURLOPT_HEADER, 1);
curl_setopt( $curl , CURLOPT_NOBODY, 0);
curl_setopt( $curl , CURLOPT_TIMEOUT, 15);
curl_setopt( $curl ,CURLOPT_ENCODING, 'gzip' );
$data = curl_exec( $curl );
if (! empty ( $data )){
$message = curl_getinfo( $curl );
curl_close( $curl );
$status = $message [ 'http_code' ];
if ( $status == '301' || $status == '302' ){
$UrlHeader = (get_headers( $url ,1));
$unurl = $UrlHeader [Location];
if ( is_array ( $unurl )) {
$unurl = $unurl [0];
$unurl .= $info3 . $unurl . $info4 ;
return $unurl ;
}
else {
$unurl .= $info3 . $unurl . $info4 ;
return $unurl ;
}
}
return $info1 ;
}
return $info2 ;
}
function adfunshort( $url )
{
global $info3 , $info4 , $info5 ;
$c = file_get_contents ( $url );
$p = "/url = '(.*)';/isU" ;
preg_match( $p , $c , $content );
$unurl = $content [1];
if ( $unurl == '' ) {
return $info5 ;
}
else {
$unurl .= $info3 . $unurl . $info4 ;
return $unurl ;
}
}
?>
<form action= "" method= "post" >
短网址:<input type= "text" name= "turl" class = "inurl" size= "26" />
<input type= "hidden" name= "url_done" value= "done" />
<input type= "submit" value= "提交" class = "suburl" />
</form>
<div id= "trurl" >
<?php
$turl = $_POST [ 'turl' ]? $_POST [ 'turl' ]: "" ;
$url_done = $_POST [ 'url_done' ]? $_POST [ 'url_done' ]: "" ;
if ( $url_done == 'done' ){
$http = substr ( $turl ,0,7);
if ( $http != 'http://' && $http != 'https:/' ){
$turl = 'http://' . $turl ;
}
$tturl = substr ( $turl ,0,11);
if ( $tturl == 'http://adf.' ){
$longurl = adfunshort( $turl );
} else {
$longurl = unshort( $turl );
} echo "短网址 " . $turl . " 的真实网址为:<br />$longurl " ;
}
?>
|
希望本文所述对大家PHP程序设计有所帮助。