Документация для разработчиков
Темная тема

randString

string
randString(
	int pass_len = 10,
	pass_chars=false
);

Возвращает строку указанной длины, состоящую из случайных символов. Символами могут быть буквы английского алфавита и цифры. Функция может использоваться например, для генерации пароля.

Параметры функции

ПараметрОписание С версии
pass_len Длина результирующей случайной строки.
Набор символов набор символов. Необязательный. По умолчанию: abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ01234567­89.

может быть массивом классов символов и тогда в результирующую строчку войдет как минимум один символ из каждого класса.

Пример:
echo randString(7, array(
	"abcdefghijklnmopqrstuvwxyz",
	"ABCDEFGHIJKLNMOPQRSTUVWXYZ",
	"0123456789",
	"!@#\$%^&*()",
));
7.1.0

Примеры использования

<?
$new_password = randString(7);
echo "Новый пароль: ".$new_password;
// выводит строку "Новый пароль: fK4ftTP"
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Артемий Зайцев
Сообщение не промодерировано, возможны ошибки и неточности.
Пример из документации содержит мягкий перенос в этой строке
Код
набор символов. Необязательный. По умолчанию: abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ01234567­89.
Если скопировать abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ01234567­­89. то будет ошибка, случайные результаты будут содержать крокозябры.
Код
$code = randString(50, ["abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ01234567­89"]);
var_dump($code);

Функция неправильно работает с многобайтовыми кодировками и русские буквы подставить нельзя, тоже будут крокозябры.

strlen внезапно вместо mb_strlen внутри методов \Bitrix\Main\Security\Random::getString и randString
Код
namespace Bitrix\Main\Security

...

public static function getStringByArray(int $length, array $charsetList): string
{
  $count = count($charsetList);

  // take strlen() out of the cycle
  $charsets = [];
  foreach ($charsetList as $charset)
  {
    $charsets[] = [$charset, strlen($charset)];
  }
}

0
Артемий Зайцев
Сообщение не промодерировано, возможны ошибки и неточности.
Пример из документации содержит мягкий перенос в этой строке
Код
набор символов. Необязательный. По умолчанию: abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ01234567­89.
Если скопировать abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ01234567­­89. то будет ошибка, случайные результаты будут содержать крокозябры.
Код
$code = randString(50, ["abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ01234567­89"]);
var_dump($code);

Функция неправильно работает с многобайтовыми кодировками и русские буквы подставить нельзя, тоже будут крокозябры.

strlen внезапно вместо mb_strlen внутри методов \Bitrix\Main\Security\Random::getString и randString
Код
namespace Bitrix\Main\Security

...

public static function getStringByArray(int $length, array $charsetList): string
{
  $count = count($charsetList);

  // take strlen() out of the cycle
  $charsets = [];
  foreach ($charsetList as $charset)
  {
    $charsets[] = [$charset, strlen($charset)];
  }
}

3
Анастасия Слимак
В новых версиях эта функция отмечена как deprecated.

Вместо неё следует использовать
Код
\Bitrix\Main\Security\Random::getString($length, $caseSensitive)
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх