Those random letters and numbers which serve as a key (in hashtable data structures) are basically encoded integers, which are AUTO_INCREMENT values in the database.
Here are the encoding and decoding functions:
const ALLOWED_CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function id2short($integer, $base = self::ALLOWED_CHARS) { $out = ''; $length = strlen($base); while($integer > $length-1) { $out = $base[fmod($integer, $length)].$out; $integer = floor( $integer / $length); } return $base[$integer].$out; } function short2id($string, $base = self::ALLOWED_CHARS) { $length = strlen($base); $size = strlen($string)-1; $string = str_split($string); $out = strpos($base, array_pop($string)); foreach($string as $i=>$char) { $out += strpos($base, $char) * pow($length, $size - $i); } return $out; }
Full code here.
No comments:
Post a Comment