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/