Создание случайной строки

Иногда необходимо создать переменную со случайными символами, например для идентификации файлов, данная функция поможет это сделать. Первый параметр сколько символов строка, второй какие символы:

lower-только нижний реигстр

upper-только верхний регист

numbers-только цифры

all-все подряд

function random_string($length, $chartypes) {
$chartypes_array=explode(",", $chartypes);
// задаем строки символов.
//Здесь вы можете редактировать наборы символов при необходимости
$lower = 'abcdefghijklmnopqrstuvwxyz'; // lowercase
$upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // uppercase
$numbers = '1234567890'; // numbers
$chars = "";
// определяем на основе полученных параметров,
//из чего будет сгенерирована наша строка.
if(in_array('all', $chartypes_array)){
$chars = $lower.$upper.$numbers;
}
else{
if(in_array('lower', $chartypes_array))
$chars = $lower;
if(in_array('upper', $chartypes_array))
$chars .= $upper;
if(in_array('numbers', $chartypes_array))
$chars .= $numbers;
}
// длина строки с символами
$chars_length = (strlen($chars) - 1);
// создаем нашу строку,
//извлекаем из строки $chars символ со случайным
//номером от 0 до длины самой строки
$string = $chars{rand(0, $chars_length)};
// генерируем нашу строку
for ($i = 1; $i < $length; $i = strlen($string)){
// выбираем случайный элемент из строки с допустимыми символами
$random = $chars{rand(0, $chars_length)};
// убеждаемся в том, что два символа не будут идти подряд
if ($random != $string{$i - 1}) $string .= $random;
}
// возвращаем результат
return $string;
}