PHP7. Генерация случайной строки
Данный материал предоставлен сайтом
PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Многие программисты сталкиваются с необходимостью генерации случайной (рандомной) строки, но решения доступные в интернете оказываются громоздкими или имеют медленную скорость исполнения.
С момента появления PHP7 получить случайную строку на много проще.
Похожая, полная версия функции с поддержкой различных версий PHP мне встречалась в Laravel Framework.
В данной статье будет описана данная функция, но в более урезанном виде (только для php7), за счет появления функции random_bytes.
Если вам необходима данная функция для других версий языка, то ищите как получить random_bytes (рандомные байты).
Переходим к разбору функции:
Пока длина полученной строки менее необходимой длины
Получаем размер случайной строки
Функция random_bytes формирует криптографические безопасные псевдослучайные байты.
Функция base64_encode кодирует полученные псевдослучайные байты алгоритмом MIME base64 и функция str_replace выполняет замену (удаляет) лишние символы ('/', '+', '=').
Применив функцию substr, возвращаем подстроку с 0 позиции до позиции указанной в переменной $size (рассмотрено ранее).
В итоге, пройдя весь цикл while, мы получаем произвольную строку, размером указанном в параметре функции str_random()
Код функции:
Пример работы функции:
Запрашиваем случайную строку размером из 8 символов.
Результат:
Код функции на gitHub
С момента появления PHP7 получить случайную строку на много проще.
Похожая, полная версия функции с поддержкой различных версий PHP мне встречалась в Laravel Framework.
В данной статье будет описана данная функция, но в более урезанном виде (только для php7), за счет появления функции random_bytes.
Если вам необходима данная функция для других версий языка, то ищите как получить random_bytes (рандомные байты).
Переходим к разбору функции:
Пока длина полученной строки менее необходимой длины
while (($len = strlen($string)) < $length) {
Получаем размер случайной строки
$size = $length - $len;
Функция random_bytes формирует криптографические безопасные псевдослучайные байты.
$bytes = random_bytes($size);
Функция base64_encode кодирует полученные псевдослучайные байты алгоритмом MIME base64 и функция str_replace выполняет замену (
str_replace(['/', '+', '='], '', base64_encode($bytes))
Применив функцию substr, возвращаем подстроку с 0 позиции до позиции указанной в переменной $size (рассмотрено ранее).
$string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
В итоге, пройдя весь цикл while, мы получаем произвольную строку, размером указанном в параметре функции str_random()
$string .=
Код функции:
function str_random($length)
{
$string = '';
while (($len = strlen($string)) < $length) {
$size = $length - $len;
$bytes = random_bytes($size);
$string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
}
return $string;
}
Пример работы функции:
Запрашиваем случайную строку размером из 8 символов.
var_dump(str_random(8));
Результат:
string(8) "0cDuRI2T"
Код функции на gitHub
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.