<?php
/**
* md5()等が生成する16進文字列を受け取り
* 短縮url用の独自の64進文字列にする
**/
function sr_hex2s64($hex) {
$char_table = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM-_";
$tablelen = strlen($char_table);
$output = "";
$cut = 6;
$dec = ((int)($dec / 4096)) xor ($dec % 4096);
while( $dec > 0 ) {
$cnum = $dec % $tablelen;
$output .= $char_table[$cnum];
$dec = (($dec - $cnum) / $tablelen);
}
}
return $output;
}
echo sr_hex2s64
(md5("a unique data")); ?>
PD9waHAKCi8qKgogKiBtZDUoKeetieOBjOeUn+aIkOOBmeOCizE26YCy5paH5a2X5YiX44KS5Y+X44GR5Y+W44KKCiAqIOefree4rnVybOeUqOOBrueLrOiHquOBrjY06YCy5paH5a2X5YiX44Gr44GZ44KLCioqLwpmdW5jdGlvbiBzcl9oZXgyczY0KCRoZXgpIHsKICAkY2hhcl90YWJsZSA9ICIwMTIzNDU2Nzg5cXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm1RV0VSVFlVSU9QQVNERkdISktMWlhDVkJOTS1fIjsKICAkdGFibGVsZW4gPSBzdHJsZW4oJGNoYXJfdGFibGUpOwogIAogICRvdXRwdXQgPSAiIjsKICAkY3V0ID0gNjsKICAkaGV4ID0gc3RycmV2KCRoZXgpOwogIAogIHdoaWxlKHN0cmxlbigkaGV4KSA+IDApIHsKICAgICRkZWMgPSBoZXhkZWMoIHN0cnJldihzdWJzdHIoJGhleCwwLCRjdXQpKSApIDsKICAgIAogICAgJGRlYyA9ICgoaW50KSgkZGVjIC8gNDA5NikpIHhvciAoJGRlYyAlIDQwOTYpOwogICAgCiAgICB3aGlsZSggJGRlYyA+IDAgKSB7CiAgICAgICRjbnVtID0gJGRlYyAlICR0YWJsZWxlbjsKICAgICAgJG91dHB1dCAuPSAkY2hhcl90YWJsZVskY251bV07CiAgICAgICRkZWMgPSAoKCRkZWMgLSAkY251bSkgLyAkdGFibGVsZW4pOwogICAgfQogICAgJGhleCA9IHN1YnN0cigkaGV4LCRjdXQpOwogIH0KICByZXR1cm4gJG91dHB1dDsKfQoKZWNobyBzcl9oZXgyczY0KG1kNSgiYSB1bmlxdWUgZGF0YSIpKTsKPz4=