求高手指教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.
?>但是出错啊,到底怎么调用,使它显示效果呢,求详细的页面代码,不甚感激!

解决方案 »

  1.   

    alphaID(12354); //会将数字转换为字母。
    alphaID('PpQXn7COf',true);//会将字母ID转换为对应的数字。
    alphaID(12354,false,6);//指定生成字母ID的长度为6.这些都是全角的啊,改成半角的就OK了
      

  2.   


    介绍里的这个例子怎么使用啊,
    http://blog.csdn.net/my_yang/article/details/7484655改成半角的,打开后也出错啊?麻烦附个完整的页面代码,本人php小白,谢谢
      

  3.   

    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 <[email protected]
     * @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;  
    }