PHP短链接url还原成长链接

在开发过程中,碰到了需要校验用户回填的短链接是不是系统所需要的,于是就需要还原找出短链接所对应的长链接。

  • 长链接转短链接

在百度上搜索程序员,跳转页面后的url就是一个长链接。当然你可以从任何地方复制一个长链接过来。


长链接

bash 复制代码
https://www.baidu.com/s?wd=%E7%A8%8B%E5%BA%8F%E5%91%98&rsv_spt=1&rsv_iqid=0xed2c9c7a0033dc5d&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib&rsv_sug2=0&rsv_btype=i&inputT=11080&rsv_sug4=11080

使用工具把长链接转成一个短链接

bash 复制代码
https://t.hk.uy/b87R
  • 短链接还原长链接
php 复制代码
/**
 * 短链还原成长链
 * @param $shortUrl
 * @return mixed|string
 */
function restoreUrl($shortUrl)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $shortUrl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla / 5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko / 20100101 Firefox / 70.0');
    curl_setopt($curl, CURLOPT_HEADER, true);
    curl_setopt($curl, CURLOPT_NOBODY, false);
    curl_setopt($curl, CURLOPT_TIMEOUT, 15);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
    $data = curl_exec($curl);
    $curlInfo = curl_getinfo($curl);
    curl_close($curl);

    print_r($curlInfo);exit;

    if ($curlInfo['http_code'] == 301 || $curlInfo['http_code'] == 302) {
        return $curlInfo['redirect_url'];
    }
    return '';
}

$url = 'https://t.hk.uy/b87R';
echo restoreUrl($url);

可以看到,使用 curl_getinfo 方法获取到的数据中,有一个 redirect_url 字段,就是原始长链接

相关推荐
chao_78941 分钟前
回溯题解——子集【LeetCode】二进制枚举法
开发语言·数据结构·python·算法·leetcode
尘世闲鱼2 小时前
解数独(C++版本)
开发语言·c++·算法·解数独
纨妙3 小时前
python打卡day59
开发语言·python
wuxuanok3 小时前
Web后端开发-请求响应
java·开发语言·笔记·学习
Sally璐璐3 小时前
IPSAN 共享存储详解:架构、优化与落地实践指南
开发语言·php
像风一样的男人@4 小时前
python --货车装厢问题
开发语言·python
Humbunklung4 小时前
Rust枚举:让数据类型告别单调乏味
开发语言·后端·rust
Y1nhl4 小时前
力扣_链表_python版本
开发语言·python·算法·leetcode·链表·职场和发展
OEC小胖胖4 小时前
深入理解 Vue.js 响应式原理及其在 Web 前端开发中的应用
开发语言·前端·javascript·vue.js·web
qq_401700414 小时前
C语言中位运算以及获取低8位和高8位、高低位合并
c语言·开发语言·算法