当前位置:网站首页>php生成短链接:将数字转成字母,将字母转成数字
php生成短链接:将数字转成字母,将字母转成数字
2022-04-23 06:45:00 【赫赫phper】
一、基类方法:定义字符串、编写转换方法
class NumberHelper
{
public static $str="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/**
* Param:将数字转为短字符串
* User: 赫陈
* Date: 2022/4/11
* @param $number
* @return string
*/
public static function generate_code($number) {
$out = "";
$codes = self::$str;
while ($number > 61) {
$m = $number % 62;
$out = $codes[$m].$out;
$number = ($number - $m) / 62;
}
return $codes[$number].$out;
}
/**
* Param:将短字符串转为数字
* User: 赫陈
* Date: 2022/4/11
* @param $string
* @return float|int
*/
public static function get_num($string){
$codes = self::$str;
$num = 0;
for($i=0;$i<strlen($string);$i++){
$n = strlen($string) - $i -1;
$pos = strpos($codes,$string[$i]);
$num += $pos * pow(62, $n);
}
return $num;
}
}
二、调用转换方法,根据自己定的规则,生成自己需要的短链接
public static function getShotLink($userid,$gid){
//获取用户ID短字符串
$_uid_str = NumberHelper::generate_code($userid);
//获取商品ID短字符串
$_good_str = NumberHelper::generate_code($gid]);
//拼接生成短链接
$param = '#A='.$_uid_str.'=B='.$_good_str.'#';
return $param
}
三、解析短链接还原参数
public static function getUnShotLink(ShotLink){
//正则匹配解析数据
$ShotLink = self::pregMatchFeng($params['share_data']);
$ShotLink = explode('=',str_replace('#','',$ShotLink));
/*解字符串为数字*/
$uid = NumberHelper::get_num($ShotLink[1]);
$gid = NumberHelper::get_num($ShotLink[3]);
//接着写自己的逻辑
。。。。。。
}
/**
* Param: 正则匹配蜂口令
* User: 赫陈
* Date: 2022/4/12
* @param $data
* @return array|mixed
*/
public static function pregMatchFeng($data){
$share_data = [];
preg_match_all("/#A=[a-zA-Z0-9]*=B=[a-zA-Z0-9]*#/",$data, $matches);
if (!empty($matches[0][0])) {
$share_data = $matches[0][0];
}
return $share_data;
}
版权声明
本文为[赫赫phper]所创,转载请带上原文链接,感谢
https://blog.csdn.net/hechenhongbo/article/details/124217683
边栏推荐
猜你喜欢

Cloud computing skills competition -- the first part of openstack private cloud environment

输入 “ net start mysql ”,出现 “ 发生系统错误 5。 拒绝访问 ” 。问题详解

Go语学习笔记 - Slice、Map | 从零开始Go语言

Dvwa 靶场练习记录

Intranet penetration series: dns2tcp of Intranet tunnel

内网渗透系列:内网隧道之icmptunnel(DhavalKapil师傅的)

CTF-MISC总结

Go语学习笔记 - 异常处理 | 从零开始Go语言

Construction of middleman environment mitmproxy

在线YAML转XML工具
随机推荐
SAP tr manual import system operation manual
Codeforces Round #784 (Div. 4)
简述存储器的分级策略
[programming practice / embedded competition] learning record of embedded competition (II): picture streaming based on TCP
内网渗透系列:内网隧道之icmptunnel(DhavalKapil师傅的)
雲計算技能大賽 -- openstack私有雲環境 第一部分
KCD_ EXCEL_ OLE_ TO_ INT_ Convert reports an error sy subrc = 2
面试学习路线
Link to some good tutorials or notes about network security and record them
[programming practice / embedded competition] learning record of embedded competition (I): establishment of TCP server and web interface
【问题解决】VS2019解决编译生成的exe文件打不开的情况
CTF攻防世界刷题51-
C 输出一种二维数组,特点如下。
Buctf MISC brossage
strcat()、strcpy()、strcmp()、strlen()
Talk about the essence of interface idempotent and consumption idempotent
攻防世界MISC刷题1-50
三星,再次“西征”
访问数据库的时候出现错误 Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY.详解
云计算技能大赛 -- openstack私有云环境 第二部分