PHP短链接url还原成长链接

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

  • 长链接转短链接

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

在这里插入图片描述
长链接

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

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

https://t.hk.uy/b87R
  • 短链接还原长链接
/*** 短链还原成长链* @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 字段,就是原始长链接
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/615752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录 字符串

344.反转字符串 344. 反转字符串 简单 提示 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a…

解析七人拼团,一人出局:社交电商的新玩法

每天五分钟讲解一个电商模式,大家好我是模式策划啊浩Zeropan_HH 在当今的社交电商时代,各种创新的营销策略层出不穷。其中,“七人拼团,一人出局”的玩法在近年来逐渐崭露头角,成为一种颇受欢迎的营销模式。那么&#…

stm32---输入捕获实验实操(巨详细)

这次来分享上次没说完的输入捕获的知识点 实验中用到两个引脚,一个是通用定时器 TIM3 的通道 1,即 PA6,用于输出 PWM 信号,另一 个是高级控制定时器 TIM1 的通道 1,即 PA8,用于 PWM 输入捕获,实…

vue3 生命周期

与 2.x 版本生命周期相对应的组合式 API beforeCreate -> 使用 setup() created -> 使用 setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroye…

服务器新创建账号并设置密码与用户权限

1、创建用户: 在root权限下,输入命令useradd -m 用户名,如下 sudo useradd -m love2、设置密码: 输入命令passwd 用户名 回车,接着输入密码操作,需输入两次 sudo password good9993、给用户设置最高权限&…

海外動態IP與海外靜態IP的區別詳解 - okey proxy

根據分配方式的不同,IP地址可以分為靜態IP和動態IP。那麼,海外動態IP和海外靜態IP又有什麼區別呢?本文將詳細解析。 海外動態IP是什麼? 海外動態IP是動態分配的海外IP地址。每次用戶上網時,都會從服務提供商的IP地址池…

window中安装Apache http server(httpd-2.4.58-win64-VS17)

windows中安装Apache http server(httpd-2.4.58-win64-VS17) 1、下载windows版本的的httpd, https://httpd.apache.org/docs/current/platform/windows.html#down 这里选择的是Apache Lounge编译的版本 https://www.apachelounge.com/download/ 2、解压到指定目录,这…

python函数装饰器参数统计调用时间和次数

1 python函数装饰器参数统计调用时间和次数 python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参,供装饰器使用。 1.1 装饰器统计调用时间和次数 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间,以及调用次数。 …

C#写windows服务,实现把检测软件崩溃工具写成服务 自动运行

一、打开Visual Studio,创建项目->Windows 服务(.NET Framework) 二、点击Service.cs 点击切换到代码视图 static Timer Timer; private Thread monitorThread; private static string logFilePath; private static Process winFormsProcess; public Service1(…

如何修复DLL错误或丢失的问题,这里提供几种方法

DLL错误是指DLL文件的任何错误,一种以.dll文件扩展名结尾的文件。 DLL错误可能出现在微软的任何操作系统中,包括Windows 10、Windows 8、Windows 7、Windows Vista和Windows XP。 DLL错误尤其麻烦,因为存在许多这样类型的文件,所…

obgs格式能通过Dasviewer导入到Revit吗?

答:Dasviewer可以支持las转换osgb,再通过osgb转换fbx或者obj。当然也可以通过重建的方式建模。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三…

入门教程:使用 Postman 发送 post 请求

Postman 是一个实用的开发工具,它让发送各类 POST 请求成为了可能,包括文本、JSON、XML 以及文件等。开发者利用此工具不仅能够检验API的功能性,还能仿真客户端的请求行为,进而深入了解客户端如何与 API 进行互动。 HTTP 协议中的…

半小时实现GPT纯血鸿蒙版

仅需半小时,即可实现纯血鸿蒙版本的ChatGPT! 废话少说,先看效果图: 如上图所示,这个小Demo实现了AI智能问答。靠右加粗的文本是用户点击底部提交按钮后出现的;后面靠左对齐的普通文本是来自AI的回答内容。…

MySQL与Java JDBC数据类型对照

MySQL数据类型JAVA数据类型JDBC TYPEBIGINTLongBIGINTTINYINTByteTINYINTSMALLINTShortSMALLINTMEDIUMINTIntegerINTEGERINTEGERIntegerINTEGERINTIntegerINTEGERFLOATFloatREALDOUBLEDoubleDOUBLEDECIMALBigDecimalDECIMALNUMERICBigDecimalNUMERICCHARStringCHARVARCHARStrin…

(第48-59讲)STM32F4单片机,FreeRTOS【事件标志、任务通知、软件定时器、Tickless低功耗】【纯文字讲解】【原创】

文章目录 🔴🟡🟢其他文章链接,独家吐血整理1、纯文字(待补充) 🔴🟡🟢其他文章链接,独家吐血整理 【吐血总结】FreeRTOS难点、Systick中断-滴答定时器、PendS…

ES6语法详解+面试必备

ES6(ECMAScript 2015)是JavaScript的一个版本,它于2015年发布。ES6引入了很多新的语法和功能,使得JavaScript更加强大、灵活和易于使用。 一、块级作用域: ES6引入了let和const关键字,可以在块级作用域中…

IP定位技术:如何保护患者的隐私和医疗数据安全?

随着科技的飞速发展,互联网已经深入到我们生活的方方面面,医疗行业也不例外。然而,这也带来了网络安全问题。如何保护患者的隐私和医疗数据的安全,成为了医疗行业面临的重大挑战。IP定位技术的应用,为解决这一问题提供…

Unity中URP下抓屏的 开启 和 使用

文章目录 前言一、抓屏开启1、Unity下开启抓屏2、Shader中开启抓屏 二、抓屏使用1、设置为半透明渲染队列,关闭深度写入2、申明纹理和采样器3、在片元着色器使用请添加图片描述 三、测试代码 前言 我们在这篇文章中看一下,URP下怎么开启抓屏。 一、抓屏…

(代码模板)JAVA_返回类R

个人留存用,通用返回类R代码模板: import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data;import java.io.Serializable; import java.util.HashMap; import java.util.Map;/*** author &#…

《共建开源》系列:Airtest-Framework - UI自动化框架系统

Airtest- Framework 平台简介 Airtest- Framework 是 基于 unittest、Flask、Airtest 搭建的 开源的 UI 自动化框架系统 提供 HTTP API 接口,实现自动解析包名并自动执行 相应目录下的 Case。目前仅支持单台设备连接。多个任务会自动排队处理。 系统要求 Pytho…