PHP   发布时间:2019-11-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – 像base36一样编码,包括大写大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用base36来缩短网址.我有一个博客条目的id并将该id转换为base36以使其更小. Base36只包含小写字母.如何包含大写字母?如果我使用base64_encode它实际上使字符串更长.

谢谢,
马克斯

解决方法

你可以找到源代码的例子来创建包含字母(小写和大写)的短网址和这两篇文章的编号,例如:

> Create short IDs with PHP – Like Youtube or TinyURL
> Building a URL Shortener

以下是第二篇文章(引用)中使用的代码部分:

$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

大佬总结

以上是大佬教程为你收集整理的php – 像base36一样编码,包括大写全部内容,希望文章能够帮你解决php – 像base36一样编码,包括大写所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。