求高手指教PHP把数字ID转字母ID的 使用示例页面代码

ChatGPT国内版 2012-11-11 10:22:10
求高手指教PHP把数字ID转字母ID的 使用示例页面代码 在网上找到了这个PHP把数字ID转字母ID的代码
详细请移步:http://blog.csdn.net/my_yang/article/details/7484655

使用示例
alphaID(12354); //会将数字转换为字母。
alphaID('PpQXn7COf',true);//会将字母ID转换为对应的数字。
alphaID(12354,false,6);//指定生成字母ID的长度为6.


本人是php小白,请问这里面的 使用示例如何放到php文件里使它显示效果呢,页面的全部代码应该是怎么样的?

直接把使用示例代码放到php文件里出错啊
我是这样弄的
<?php 
alphaID(12354); //会将数字转换为字母。
alphaID('PpQXn7COf',true);//会将字母ID转换为对应的数字。
alphaID(12354,false,6);//指定生成字母ID的长度为6.
?>


但是出错啊,到底怎么调用,使它显示效果呢,求详细的页面代码,不甚感激!

...全文
461 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChatGPT国内版 2012-11-11
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
alphaID(12354); //会将数字转换为字母。 alphaID('PpQXn7COf',true);//会将字母ID转换为对应的数字。 alphaID(12354,false,6);//指定生成字母ID的长度为6. 这些都是全角的啊,改成半角的就OK了
介绍里的这个例子怎么使用啊, http://blog.csdn.net/my_yang/article/details/7484655 改成半角的,打开后也出错啊?麻烦附个完整的页面代码,本人php小白,谢谢
xuzuning 2012-11-11
  • 打赏
  • 举报
回复
alphaID(12354); //会将数字转换为字母。 alphaID('PpQXn7COf',true);//会将字母ID转换为对应的数字。 alphaID(12354,false,6);//指定生成字母ID的长度为6. 这些都是全角的啊,改成半角的就OK了
xuzuning 2012-11-11
  • 打赏
  • 举报
回复
echo alphaID(12354);  //qnd  
echo alphaID('qnd',true); //12354  
echo alphaID(12354,false,6); //qndaab  
echo alphaID('qndaab',true, 6); //12354  

/** 
 * Translates a number to a short alhanumeric version 
 * 
 * Translated any number up to 9007199254740992 
 * to a shorter version in letters e.g.: 
 * 9007199254740989 --> PpQXn7COf 
 * 
 * specifiying the second argument true, it will 
 * translate back e.g.: 
 * PpQXn7COf --> 9007199254740989 
 * 
 * this function is based on any2dec && dec2any by 
 * fragmer[at]mail[dot]ru 
 * see: http://nl3.php.net/manual/en/function.base-convert.php#52450 
 * 
 * If you want the alphaID to be at least 3 letter long, use the 
 * $pad_up = 3 argument 
 * 
 * In most cases this is better than totally random ID generators 
 * because this can easily avoid duplicate ID's. 
 * For example if you correlate the alpha ID to an auto incrementing ID 
 * in your database, you're done. 
 * 
 * The reverse is done because it makes it slightly more cryptic, 
 * but it also makes it easier to spread lots of IDs in different 
 * directories on your filesystem. Example: 
 * $part1 = substr($alpha_id,0,1); 
 * $part2 = substr($alpha_id,1,1); 
 * $part3 = substr($alpha_id,2,strlen($alpha_id)); 
 * $destindir = "/".$part1."/".$part2."/".$part3; 
 * // by reversing, directories are more evenly spread out. The 
 * // first 26 directories already occupy 26 main levels 
 * 
 * more info on limitation: 
 * - http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/165372 
 * 
 * if you really need this for bigger numbers you probably have to look 
 * at things like: http://theserverpages.com/php/manual/en/ref.bc.php 
 * or: http://theserverpages.com/php/manual/en/ref.gmp.php 
 * but I haven't really dugg into this. If you have more info on those 
 * matters feel free to leave a comment. 
 * 
 * @author  Kevin van Zonneveld <kevin@vanzonneveld.net> 
 * @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<strlen($index); $n++) {  
      $i[] = substr( $index,$n ,1);  
    }  
   
    $passhash = hash('sha256',$passKey);  
    $passhash = (strlen($passhash) < strlen($index))  
      ? hash('sha512',$passKey)  
      : $passhash;  
   
    for ($n=0; $n < strlen($index); $n++) {  
      $p[] =  substr($passhash, $n ,1);  
    }  
   
    array_multisort($p,  SORT_DESC, $i);  
    $index = implode($i);  
  }  
   
  $base  = strlen($index);  
   
  if ($to_num) {  
    // Digital number  <<--  alphabet letter code  
    $in  = strrev($in);  
    $out = 0;  
    $len = strlen($in) - 1;  
    for ($t = 0; $t <= $len; $t++) {  
      $bcpow = bcpow($base, $len - $t);  
      $out   = $out + strpos($index, substr($in, $t, 1)) * $bcpow;  
    }  
   
    if (is_numeric($pad_up)) {  
      $pad_up--;  
      if ($pad_up > 0) {  
        $out -= pow($base, $pad_up);  
      }  
    }  
    $out = sprintf('%F', $out);  
    $out = substr($out, 0, strpos($out, '.'));  
  } else {  
    // Digital number  -->>  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;  
}  

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧