当前位置:首页 > PHP教程 > php高级应用 > 列表

学习php简单实现短网址(短链)还原的方法

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-24 10:01:16 浏览: 评论:0 

本文实例讲述了php简单实现短网址还原的方法,分享给大家供大家参考,具体如下:

  1. <?php 
  2.  
  3. $info1 = '亲!暂不能解析此类短网址。'; 
  4.  
  5. $info2 = '亲!网址解析失败,请重试。'; 
  6.  
  7. $info3 = '<br/><b><a href="'; 
  8.  
  9. $info4 = '" target="_blank">立即访问>></a></b>'; 
  10.  
  11. $info5 = '亲!不是短网址或无效。'; 
  12.  
  13. function unshort($url) 
  14.  
  15. { 
  16.  
  17. global $info1,$info2,$info3,$info4; 
  18.  
  19.  $curl = curl_init(); 
  20.  
  21.  curl_setopt($curl, CURLOPT_URL, $url); 
  22.  
  23.  curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
  24.  
  25.  curl_setopt ($curl, CURLOPT_USERAGENT, 'Mozilla/8.0 (compatible; MSIE 8.0; Windows 7'); 
  26.  
  27.  curl_setopt($curl, CURLOPT_HEADER, 1); 
  28.  
  29.  curl_setopt($curl, CURLOPT_NOBODY, 0); 
  30.  
  31.  curl_setopt($curl, CURLOPT_TIMEOUT, 15); 
  32.  
  33.  curl_setopt($curl,CURLOPT_ENCODING, 'gzip'); 
  34.  
  35.  $data = curl_exec($curl); 
  36.  
  37.  if(!emptyempty($data)){ 
  38.  
  39.  $message = curl_getinfo($curl); 
  40.  
  41.   curl_close($curl); 
  42.  
  43.    $status = $message['http_code']; 
  44.  
  45.    if ($status == '301' || $status == '302' ){ 
  46.  
  47.     $UrlHeader = (get_headers($url,1)); 
  48.  
  49.     $unurl = $UrlHeader[Location]; 
  50.  
  51.     if(is_array($unurl)) { 
  52.  
  53.      $unurl = $unurl[0]; 
  54.  
  55.      $unurl .=$info3.$unurl.$info4; 
  56.  
  57.      return $unurl; 
  58.  
  59.      } 
  60.  
  61.     else { 
  62.  
  63.     $unurl .=$info3.$unurl.$info4; 
  64.  
  65.     return $unurl; 
  66.  
  67.     } 
  68.  
  69.    } 
  70.  
  71.   return $info1; 
  72.  
  73.  } 
  74.  
  75.  return $info2; 
  76.  
  77. } 
  78.  
  79. function adfunshort($url) 
  80.  
  81. { 
  82.  
  83. global $info3,$info4,$info5; 
  84.  
  85.  $c = file_get_contents($url); 
  86.  
  87.  $p = "/url = '(.*)';/isU"; 
  88.  
  89.  preg_match($p, $c, $content); 
  90.  
  91.  $unurl = $content[1]; 
  92.  
  93.  if($unurl == '') { 
  94.  
  95.   return $info5; 
  96.  
  97.  } 
  98.  
  99.  else { 
  100.  
  101.   $unurl .=$info3.$unurl.$info4; 
  102.  
  103.   return $unurl; 
  104.  
  105.  } 
  106.  
  107. } 
  108.  
  109. ?> 
  110.  
  111. <form action="" method="post"> 
  112.  
  113. 短网址:<input type="text" name="turl" class="inurl" size="26" /> 
  114.  
  115. <input type="hidden" name="url_done" value="done" /> 
  116.  
  117. <input type="submit" value="提交" class="suburl" /> 
  118.  
  119. </form> 
  120.  
  121. <p id="trurl"> 
  122.  
  123. <?php 
  124.  
  125. $turl = $_POST['turl']?$_POST['turl']:""; 
  126.  
  127. $url_done= $_POST['url_done']?$_POST['url_done']:""; 
  128.  
  129. if ($url_done == 'done'){ 
  130.  
  131. $http = substr($turl,0,7); 
  132.  
  133.  if ($http != 'http://' && $http != 'https:/'){ 
  134.  
  135.   $turl = 'http://'.$turl; 
  136.  
  137.   } 
  138.  
  139.   $tturl = substr($turl,0,11); 
  140.  
  141.   if ($tturl == 'http://adf.'){ 
  142.  
  143.   $longurl = adfunshort($turl); 
  144.  
  145.   }else { 
  146.  
  147.   $longurl = unshort($turl); 
  148.  
  149.  }echo "短网址 ".$turl." 的真实网址为:<br />$longurl "; 
  150.  
  151. } 
  152.  
  153. ?>

Tags: php短网址还原

分享到: