php简单实现短网址(短链)还原的方法(测试可用)

5年以前  |  阅读数:771 次  |  编程语言:PHP 

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

这里以脚本之家http://www.jb51.net的短网址http://t.cn/heEHwk为例运行效果截图如下:

具体代码如下:


    <?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 ";
    }
    ?>

另外,本站还提供了短网址生成工具,具体链接如下:

http://tools.jb51.net/password/dwzcreate

更多关于PHP相关内容可查看本站专题:《php加密方法总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例