function Random::string

Same name in other branches
  1. 8.9.x core/lib/Drupal/Component/Utility/Random.php \Drupal\Component\Utility\Random::string()
  2. 10 core/tests/Drupal/TestTools/Random.php \Drupal\TestTools\Random::string()
  3. 10 core/lib/Drupal/Component/Utility/Random.php \Drupal\Component\Utility\Random::string()
  4. 11.x core/tests/Drupal/TestTools/Random.php \Drupal\TestTools\Random::string()
  5. 11.x core/lib/Drupal/Component/Utility/Random.php \Drupal\Component\Utility\Random::string()

Generates a random string of ASCII characters of codes 32 to 126.

The generated string includes alpha-numeric characters and common miscellaneous characters. Use this method when testing general input where the content is not restricted.

Parameters

int $length: Length of random string to generate.

bool $unique: (optional) If TRUE ensures that the random string returned is unique. Defaults to FALSE.

callable $validator: (optional) A callable to validate the string. Defaults to NULL.

Return value

string Randomly generated string.

See also

\Drupal\Component\Utility\Random::name()

1 call to Random::string()
Random::object in core/lib/Drupal/Component/Utility/Random.php
Generates a random PHP object.

File

core/lib/Drupal/Component/Utility/Random.php, line 56

Class

Random
Defines a utility class for creating random data.

Namespace

Drupal\Component\Utility

Code

public function string($length = 8, $unique = FALSE, $validator = NULL) {
    $counter = 0;
    // Continue to loop if $unique is TRUE and the generated string is not
    // unique or if $validator is a callable that returns FALSE. To generate a
    // random string this loop must be carried out at least once.
    do {
        if ($counter == static::MAXIMUM_TRIES) {
            throw new \RuntimeException('Unable to generate a unique random name');
        }
        $str = '';
        for ($i = 0; $i < $length; $i++) {
            $str .= chr(mt_rand(32, 126));
        }
        $counter++;
        $continue = FALSE;
        if ($unique) {
            $continue = isset($this->strings[$str]);
        }
        if (!$continue && is_callable($validator)) {
            // If the validator callback returns FALSE generate another random
            // string.
            $continue = !call_user_func($validator, $str);
        }
    } while ($continue);
    if ($unique) {
        $this->strings[$str] = TRUE;
    }
    return $str;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.