通过新浪微博API,生成短链接,支持一次性转多个长链接

什么是短链接

短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。

短链接服务

国内各大微博都推出了自己的短链接服务。例如新浪微博、腾讯微博等。

为什么选用新浪微博API

新浪微博短链接API是开放的

新浪微博短链接API不需要用户登录

文档查询链接

使用方法

拿到自己的AppKey后,替换类的成员属性$appKey的值即可,如下这样的,$shortUrl是API请求地址

// APPkey,我在网上找的(https://fengmk2.com/blog/appkey.html),可以自己申请

protected $appKey = '569452181';

// 转短连接API地址

protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';

其他的,基本不需要配置,直接实例化类ShortLink,然后调用方法getShortUrl即可,需要说明的是长链接URL数组$longUrl里的值可以传多个值

当然了,为了方便,我写为一个类,可以根据自己的需要,进行调整,满足自己的需求即可。

源码

/**

* 通过新浪微博API,生成短链接,支持一次性转多个长链接

* Class shortClass

* @time 2018-08-14

* @author gxcuizy

*/

Class ShortLink {

// APPkey,我在网上找的(https://fengmk2.com/blog/appkey.html),可以自己申请

protected $appKey = '569452181';

// 转短连接API地址

protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';

/**

* 生成短链接

* @param array $longUrl 长链接数组

* @return array 返回短连接数据

*/

public function getShortUrl($longUrl = []) {

$code = true;

$msg = '请求成功!';

$result = [];

// 长链接数组为空,不处理

if (empty($longUrl)) {

$code = false;

$msg = '长链接数据不能为空';

return ['code' => $code, 'msg' => $msg, 'result' => $result];

}

// 拼接请求URL

$longUrlStr = $this->_getLongUrl($longUrl);

$shortUrl = $this->shortUrl;

$appKey = $this->appKey;

$param = 'source=' . $appKey . '&' . $longUrlStr;

$curlUrl = $shortUrl . $param;

// 发送CURL请求

$result = $this->_sendCurl($curlUrl);

return ['code' => $code, 'msg' => $msg, 'result' => $result];

}

/**

* 获取请求URL字符串

* @param array $longUrl 长链接数组

* @return string 长链接URL字符串

*/

private function _getLongUrl($longUrl = []) {

$str = '';

foreach ($longUrl as $url) {

$str .= ('url_long=' . $url . '&');

}

$newStr = substr($str, 0, strlen($str) - 1);

return $newStr;

}

/**

* 发送CURL请求(GET)

* @param string $curlUrl 请求地址

* @return array 返回信息

*/

private function _sendCurl($curlUrl) {

// 初始化

$ch = curl_init();

// 设置选项,包括URL

curl_setopt($ch, CURLOPT_URL, $curlUrl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

// 执行并获取HTML文档内容

$output = curl_exec($ch);

// 释放curl句柄

curl_close($ch);

// Json数据转为数组

$result = json_decode($output, true);

return $result;

}

}

// 实例化对象

$shortObj = new ShortLink();

// 多个连接可以直接放到数组中,类似$longUrl = ['url1', 'url2', ……]

$longUrl = ['http://blog.y0701.com/index.html'];

// 开始转长链接为短链接

$result = $shortObj->getShortUrl($longUrl);

print_r($result);

结束语

上面说到的网上查找得到的一些AppKey,因为来源不明,所以,不建议用于生产环境,需要用于生产环境的话,建议直接在新浪微博开发者平台里创建自己的应用就行。

微博短链接生成 php,新浪微博API生成短链接相关推荐

  1. 基于新浪微博API生成短链接的几款在线工具

    需求背景 很多人在营销推广中都要使用到短链接,新浪短链接则是大家最先接触到的,服务也很稳定,所以需求量也很大.据不完全统计,大概每天有几十亿条t.cn短链接生成.如此巨大的数量,难道都是先登录新浪微博 ...

  2. UTM参数是什么?如何批量生成带UTM参数的短链接?

    什么是UTM参数? 为了更好的追踪&量化不同的渠道带来的流量,我们经常需要生成各个渠道推广的链接带utm参数的链接,来数字化不同去渠道的引流效果.UTM是"Urchin Tracki ...

  3. java 新浪短链接_java生成短连接(调用新浪微博api生成)

    java生成短连接 主要利用新浪微博提供的api生成 import java.io.IOException; import java.util.UUID; import com.alibaba.fas ...

  4. 如何使用ASP.NET Core Web API实现短链接服务

    前言 在前面的文章中,我们介绍了hashids.net,可以将数值型Id加密成无意义的字符串. 今天,我们来利用这一特点,实现短链接服务. 原理 短链接,顾名思义就是在形式上比较短的链接网址.借助短链 ...

  5. php调用新浪短链接API转短链接

    调用新浪短链api,长链接可转为http://t.cn/RX7mLZh这种t.cn短链,同时可转回原链接! //新浪的App_Key const SINAAPPKEY = '291**161014'; ...

  6. 短域名生成java_腾讯短链接url生成接口/腾讯短网址在线生成/新浪微博短链接生成器的分享...

    在通常情况下,URL是由系统生成的,通常包括URI路径,多个查询参数,可以对参数进行加密和解密. 当人们要分享某个URL,比如短信,邮件,社交媒体,这就需要短URL. 而短网址,顾名思义就是在长度上比 ...

  7. 利用新浪API批量生成t.cn 短链接的接口有哪些?

    新浪提供了长链接转为短链接的API,可以把长链接转为t.cn/xxx这种格式的短链接.短链接对于一些商家来说使用价值非常大,故整理了6个较为好用的t.cn短链接批量生成接口. 1.快鸟短网址 随着移动 ...

  8. php短链接生成,短链接api

    话不多说,直接上干货,http://www.m58.link/ 免费提供直接转和api转,还有个性化跳转,密码跳转等,简直不要太好用. 1.直接转: 进网页直接输入长网址,然后点shorten直接转 ...

  9. MurmurHash 算法生成短链接

    生成短链接 参考 短链接设计和思考_新猿一马的博客-CSDN博客_短连接设计 https://mp.weixin.qq.com/s/dN7XZbyz5vyeJO2sd6tudA 网址大家都知道,很长的 ...

最新文章

  1. iptables命令_理解 Linux 下的 Netfilter/iptables
  2. 悖论:早期互联网项目,是否需要技术含量?
  3. java调用oracle存储过程_做一点,记一点 ~ Java调用Oracle存储过程
  4. 容器技术之kubectl常用命令
  5. vs2019能写Java吗_Visual studio2019打包程序过程
  6. 【CAM应用】谈CAM软件在实际生产中的应用举例
  7. jquery $.get和$.post设置请求超时error处理
  8. [转帖]达梦数据库(DM6)和ORACLE 10g的异同点
  9. 推荐系统-猜你喜欢设计
  10. vt功能对计算机有影响吗,电脑开vt有什么坏处
  11. 斯坦福的著名小兔子模型的点云数据_基于正交投影的点云局部特征描述详解
  12. 《关于我横扫一线厂的那些面经》拼多多Java岗(附答案)
  13. 【转载】《Real-Time Rendering 3rd》 提炼总结】(二) 第二章 · 图形渲染管线 The Graphics Rendering Pipeline
  14. java-php-python-晨光文具店进销存系统设计与开发计算机毕业设计
  15. 2020年文档相似性算法:初学者教程
  16. linux下最好用的安卓模拟器!
  17. linux mint安装sbt及环境配置
  18. 根据word自动生成html代码文件
  19. 眼图测试(信号完整性测试)-嵌入式多媒体卡eMMC存储芯片
  20. 常用方法(图片逆光度、傅里叶变换、寻找波峰波谷、计算俯仰/侧脸)

热门文章

  1. RMAN-20005: target database name is ambiguous
  2. 【STM32F407的DSP教程】第22章 DSP矩阵运算-放缩,乘法和转置矩阵
  3. java applet 打印_applet 打印常见问题与解决方法
  4. Android NDK jni开发,适当的给Android 代码加密
  5. html5 web speech,Web Speech
  6. Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发
  7. dpdk pmd驱动初始化
  8. libuv编译Linux,OS X下 Android NDK 编译 libuv
  9. springboot项目导入idea中环境配置相关问题解决
  10. 地面分割:Fast Segmentation of 3D Point Clouds for Ground Vehicles