php – 像base36一样编码,包括大写
发布时间:2020-05-25 09:23:17 所属栏目:PHP 来源:互联网
导读:我使用base36来缩短网址.我有一个博客条目的id并将该id转换为base36以使其更小. Base36只包含小写字母.如何包含大写字母?如果我使用base64_encode它实际上使字符串更长. 谢谢, 马克斯 你可以找到源代码的例子来创建包含字母(小写和大写)的短网址和这两篇文章
|
我使用base36来缩短网址.我有一个博客条目的id并将该id转换为base36以使其更小. Base36只包含小写字母.如何包含大写字母?如果我使用base64_encode它实际上使字符串更长. 谢谢, > Create short IDs with PHP – Like Youtube or TinyURL 以下是第二篇文章(引用)中使用的代码部分: $codeset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$base = strlen($codeset);
$n = 300;
$converted = "";
while ($n > 0) {
$converted = substr($codeset,($n % $base),1) . $converted;
$n = floor($n/$base);
}
echo $converted; // 4Q
你可以很容易地将它封装在一个函数中 – 唯一需要考虑的是$n将作为参数接收: function shorten($n) {
$codeset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$base = strlen($codeset);
$converted = "";
while ($n > 0) {
$converted = substr($codeset,1) . $converted;
$n = floor($n/$base);
}
return $converted;
}
并以这种方式调用它: $id = 123456; $url = shorten($id); var_dump($url); 你得到 : string 'w7e' (length=3) (如果需要,您还可以添加一些其他字符 – 具体取决于您希望在URL中获得的内容) 评论后编辑: 通过阅读第二篇文章(我从中获得了缩短代码),您将找到执行非缩短的代码. 将该代码封装在函数中不应该那么难,并且可能会得到这样的结果: function unshorten($converted) {
$codeset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$base = strlen($codeset);
$c = 0;
for ($i = strlen($converted); $i; $i--) {
$c += strpos($codeset,substr($converted,(-1 * ( $i - strlen($converted) )),1))
* pow($base,$i-1);
}
return $c;
}
并用缩短的url调用它: $back_to_id = unshorten('w7e');
var_dump($back_to_id);
会得到你: int 123456 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
