Эта функция генерирует хеш, содержащий равномерно распределенные символы [a-z]
:
function my_hash($string, $length = 8) {
// Convert to a string which may contain only characters [0-9a-p]
$hash = base_convert(md5($string), 16, 26);
// Get part of the string
$hash = substr($hash, -$length);
// In rare cases it will be too short, add zeroes
$hash = str_pad($hash, $length, '0', STR_PAD_LEFT);
// Convert character set from [0-9a-p] to [a-z]
$hash = strtr($hash, '0123456789', 'qrstuvwxyz');
return $hash;
}
Кстати, если это важно для вас, для 100 000 различных строк у вас будет ~ 2% шансстолкновение хешей (для хеша длиной 8 символов), и для миллиона строк этот шанс возрастает до ~ 90%, если моя математика верна.