long link to short link code:
<?php
function short_url($input = "", $salt = "") {
$base62 = array ("a", "b", "c", "d", "e", "f", "g", "h","i", "j", "k", "l", "m", "n", "o", "p","q", "r", "s", "t", "u", "v", "w", "x","y", "z", "0", "1", "2", "3", "4", "5","6", "7", "8", "9", "A", "B", "C", "D","E", "F", "G", "H", "I", "J", "K", "L",
"M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" );
$hex = md5($input . $salt);
$hex_length = strlen($hex);
$sub_hex_length = $hex_length / 8;
$output = array();
for ($i = 0; $i < $sub_hex_length; $iPP) {
$sub_hex = substr($hex, $i * 8, 8);
$int = 0x3FFFFFFF & (1 * ("0x" . $sub_hex));
$out = "";
for ($j = 0; $j < 5; $jPP) {
$val = 0x0000003F & $int;
$val = $val % 62;
$out .= $base62[$val];
$int = $int >> 6;
}
$output[] = $out;
}
$in = 0x3 & (1 * ("0x".substr($hex, 0, 1)));
return $output[$in];
}
Why do you use bit operations in the second for loop? And is 0x0000003F
.