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