Implement PHP code that turns the digital ID to letter Id

Source: Internet
Author: User
Tags manual hash mixed php code pow strlen
Alphaid (12354);  //converts numbers to letters.  
  alphaid (' Ppqxn7cof ', true);//will convert the letter ID to the corresponding number.  
  Alphaid (12354,false,6);//Specifies that the length of the generated letter ID is 6.

Source:

<?php/** * Translates a number to a short alhanumeric version * * Translated no number up to 900719925474099 2 * to a shorter version in letters e.g.: * 9007199254740989--> PPQXN7COF * * specifiying the second argument True, it would * translate back e.g: * PPQXN7COF--> 9007199254740989 * * This function is based on Any2dec &am 
 p;& Dec2any by * fragmer[at]mail[dot]ru * see:http://nl3.php.net/manual/en/function.base-convert.php#52450 * * If you are want the alphaid to being at least 3-long, use the * $pad _up = 3 Argument * * In most cases this is bet 
 ter than totally random ID generators * Because this can easily avoid ID ' s. 
 * For example if your correlate the Alpha ID to a auto incrementing ID * in your database, and you are done.  * * The reverse is done because it makes it slightly more cryptic, * but it also makes it easier to spread of IDs In different * directories on your filesystem. Example: * $part 1= substr ($alpha _id,0,1); 
 * $part 2 = substr ($alpha _id,1,1); 
 * $part 3 = substr ($alpha _id,2,strlen ($alpha _id)); * $destindir = "/". $part 1. " /". $part 2." 
 /". $part 3; *//By reversing, directories are more evenly spread out. The *///directories already occupy main levels * More info on limitation: *-Http://blade.nagaokau  
 t.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/165372 * * If you are really need this for bigger numbers your probably to look * at things like:http://theserverpages.com/php/manual/en/ref.bc.php * or:http://theserverpages.com/php/manual/en/re f.gmp.php * But I haven ' t really dugg into this. 
 If you are have more info on those * matters feel free to leave a comment. * @author Kevin van Zonneveld <kevin@vanzonneveld.net> @author Simon Franz * @author deadfish * @copy Right 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net) * @license Http://www.opensource.org/licenses/bsd-licen se.php New BSD Licence * @version SVn:release: $Id: alphaID.inc.php 344 2009-06-10 17:43:59z Kevin $ * @link http://kevin.vanzonneveld.net/* * @pa  Ram mixed $in String or long input to translate * @param a 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 pass Word 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 = "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxy  
  Z ";  if ($passKey!== null) {//Although this function ' s purpose's to just make the//ID Short-and  Secure,//With this patch by Simon Franz (http://blog.snaky.org/)//Your can optionally supply a password to   
      Make it harder/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);  
    //unity3d script: http://www.unitymanual.com//http://www.bianceng.cn 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; }

See more highlights of this column: http://www.bianceng.cnhttp://www.bianceng.cn/webkf/PHP/

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.