Как сгенерировать случайную строку с помощью Laravel Faker между минимальным и максимальным количеством символов

Я ищу способ сгенерировать случайную строку между минимальным и максимальным количеством символов с помощью laravel Faker. Мне нужно создать случайные строки между символами 4 и 20. Этот метод str_random генерирует ровно 20 символов, но как указать минимальное количество символов?

<?php

use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => str_random(20),
    ];
});

Обновлено: теперь я использую следующий код в качестве временного решения:

'name' => substr($faker->name(), 0, rand(4, 20))

person ivva    schedule 10.08.2019    source источник
comment
php.net/manual/en/function.rand.php может help (и str_random() это не метод Faker, а метод Laravel)   -  person brombeer    schedule 10.08.2019
comment
Да, но мне нужны строки, а не целые числа.   -  person ivva    schedule 10.08.2019
comment
Но ведь вам нужно целое число от 4 до 20, верно? (Если str_random(20) генерирует случайную строку длиной 20, просто замените 20 случайным целым числом от 4 до 20)   -  person brombeer    schedule 10.08.2019
comment
Я застрял в этом лол. Спасибо за разъяснение.   -  person ivva    schedule 10.08.2019
comment
Это работает, но это явно не имена. Я не мог найти способ сделать это с помощью Faker   -  person ivva    schedule 10.08.2019
comment
Кроме того, они не могут содержать от 4 до 20 символов.   -  person brombeer    schedule 11.08.2019


Ответы (1)


Вы можете использовать regexify, и это позволит вам контролировать, какие символы могут быть в случайно сгенерированной строке, например:

<?php

use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->regexify('[A-Za-z0-9]{' . mt_rand(4, 20) . '}'),
    ];
});

Другой вариант - $faker->realText(mt_rand(4, 20))

person Latheesan    schedule 11.08.2019