找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 625|回复: 0
打印 上一主题 下一主题

PHP数字和字符串ID互转函数(类似优酷ID)

[复制链接]

2588

主题

2588

帖子

7694

积分

论坛元老

Rank: 8Rank: 8

积分
7694
跳转到指定楼层
楼主
发表于 2018-2-14 05:56:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            不知道你注意了没有,类似优酷、腾讯视频等其他视频链接似乎类似这样的
[U]复制代码[/U] 代码如下:
http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html
注意id_xxx那段,是不是看不懂了,但你无可否认这个就是id,这不国外的一位牛人早在09年就写了针对PHP/Python/Javascript/Java/SQL的生成方法,可见我现在是多么的落伍,下面我把代码贴出来,希望分享精神永存。
[U]复制代码[/U] 代码如下:
* @author   Simon Franz
* @author   Deadfish
* @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net)
* @license   http://www.opensource.org/licenses/bsd-license.php New BSD Licence
* @version   SVN: Release: $Id: alphaID.inc.php 344 2009-06-10 17:43:59Z kevin $
* @link   http://kevin.vanzonneveld.net/
*
* @param mixed   $in      String or long input to translate
* @param boolean $to_num  Reverses translation when true
* @param mixed   $pad_up  Number or boolean padds the result up to a specified length
* @param string  $passKey Supplying a password makes it harder to calculate the original ID
*
* @return mixed string or long
*/
function alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
{
  $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  if ($passKey !== null) {
      // Although this function's purpose is to just make the
      // ID short - and not so much secure,
      // with this patch by Simon Franz (http://blog.snaky.org/)
      // you can optionally supply a password to make it harder
      // to calculate the corresponding numeric ID

      for ($n = 0; $n>  alphabet letter code
      if (is_numeric($pad_up)) {
          $pad_up--;
          if ($pad_up > 0) {
              $in += pow($base, $pad_up);
          }
      }

      $out = "";
      for ($t = floor(log($in, $base)); $t >= 0; $t--) {
          $bcp = bcpow($base, $t);
          $a   = floor($in / $bcp) % $base;
          $out = $out . substr($index, $a, 1);
          $in  = $in - ($a * $bcp);
      }
      $out = strrev($out); // reverse
  }

  return $out;
}
使用举例
[U]复制代码[/U] 代码如下:
执行结果将被返回“fE2XnNGpF”,我们可以把它认为是加密,进行反解密则
[U]复制代码[/U] 代码如下:
那么就转换成真实的数字“9007199254740989”。方法还可以支持使用key进行加密,使得别人无法解得你真实的ID。
            
            
您可能感兴趣的文章:
  • php通过字符串调用函数示例
  • PHP生成自定义长度随机字符串的函数分享
  • php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
  • php对包含html标签的字符串进行截取的函数分享
  • PHP自带函数给数字或字符串自动补齐位数
  • php mb_substr()函数截取中文字符串应用示例
  • 利用PHP函数计算中英文字符串长度的方法
  • PHP字符串比较函数strcmp()和strcasecmp()使用总结
  • PHP中常用的字符串格式化函数总结
  • php常用字符串处理函数实例分析
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端